R6002-floating point not loaded 的问题解决方法 .

最近项目的要计算浮点数据,为了调试方便,输出计算结果值到DEBUG信息,结果却出现 R6002 错误

 

Google了一下,MSDN上对于R6002的描述信息是:

------------------------------------------------------------------------------------------------------------------------

 

错误消息

未加载浮点支持

 

未链接必需的浮点库。

通过检查下面的可能原因进行修复

  1. 该程序通过选项(如 /FPi87,该选项要求有协处理器)被编译或链接,但该程序运行在一台未安装协处理器的计算机上。

  2. printf_s 或 scanf_s 函数的格式字符串包含浮点格式规范,而该程序不包含任何浮点值或变量。

  3. 编译器仅当必要时才通过加载浮点支持以最小化程序大小。编译器无法检测到格式字符串中的浮点格式规范,因此编译器未加载必要的浮点例程。

  4. 使用浮点参数以符合浮点格式规范,或在程序的其他地方执行浮点赋值。该操作将导致加载浮点支持。

  5. 在由混合语言编写的程序中,当程序进行链接时在 FORTRAN 库之前指定了 C 库。重新链接并最后指定 C 库。

 

 

------------------------------------------------------------------------------------------------------------------------

也就是说出现该问题的原因有上面几种可能

1.没有指定该选项,这个原因不可能

2.虽然是用的_vscprintf,vsprintf_s,但是肯定包含浮点值了

3.经过分析这个是可能的原因,因为我的要输出浮点数的地方是在EXE里,而实际输出到DEBUG信息的函数是在一个程序核心库的DLL里,也就是调用_vscprintf,vsprintf_s的代码就是在DLL里面,而这个DLL里没有任何一行代码用到浮点运行,导致了编译器没有加载“浮点例程”

 

 

解决办法:

强制编译器为这个DLL加载“浮点例程”

 

1.找了半天,没找到有这个编译选项,如有哪位知道的告诉我一下

2.在DLL里写一行没实际用途的浮点运算代码: float a = 0.00f,编译器就会检测到需要浮点运算

你可能感兴趣的:(R6002-floating point not loaded 的问题解决方法 .)