VS2012中的R6002 - floating point support not loaded错误

长平狐 发布于 2013/06/03 14:52
阅读 788
收藏 0

VS2012中的R6002 - floating point support not loaded错误

一.问题描述

由于项目的需要,最近在VS2012中调试算法.出问题的代码片段如下(由printf函数引起的runtime error):

fprintf(fpWrite2,"里程: %010f   ",stpSample->buf[12] + stpSample->buf[13] * 256 + stpSample->buf[14] * 65536l + stpSample->buf[15] * 256 * 65536l);

其中buff是unsigned char型的数组.



二.解决方案

将要打印的数据强制转换为float型,或者在前面为一个浮点型数据复制(但要注意不要被编译器优化掉).

三.问题分析

错误信息为未加载浮点支持.应用程序需要浮点库,但该库没有链接进程序中,通过检查下面的可能原因进行修复:

  1. 该程序通过选项(如 /FPi87,该选项要求有协处理器)被编译或链接,但该程序运行在一台未安装协处理器的计算机上。
  2. printf 或 scanf函数的格式字符串包含浮点格式规范,而该程序不包含任何浮点值或变量。
  3. 编译器仅当必要时才通过加载浮点支持以最小化程序大小。编译器无法检测到格式字符串中的浮点格式规范,因此编译器未加载必要的浮点例程。
  4. 使用浮点参数以符合浮点格式规范,或在程序的其他地方执行浮点赋值。该操作将导致加载浮点支持。
  5. 在由混合语言编写的程序中,当程序进行链接时在 FORTRAN 库之前指定了 C 库。重新链接并最后指定 C 库。
许多微软的运行时库函数需要从数学协处理器或编译器自带的浮点库中获得浮点支持.仅当需要时才加载浮点支持功能.当在格式化字符或printf和scanf函数中使用一个浮点类型说明符(比如%f)时,你必须在参数列表中指定一个浮点类型的数或者一个浮点类型的数据指针,从而告诉编译器需要加载浮点类型支持.微软运行时库中的数学函数和UNIX V中数学函数的一场处理方式一样.
通过上面的分析,文章开头的问题一目了然,同时也给出了解决方法.

四.win32.pinfi病毒病毒引起的问题

这个不是本文的重点,感兴趣的读者可以参考http://hi.baidu.com/f0xriver/item/1e6f38c003ac8bba0c0a7b2f.


原文链接:http://blog.csdn.net/ce123/article/details/8858386
加载中
返回顶部
顶部