使用我们的应用程序时客户收到R6002运行时错误

时间:2011-01-20 16:36:38

标签: windows visual-c++ runtime-error

我们有一个使用Visual C ++ 2005构建的应用程序,并且有一位客户报告他收到了这个运行时错误:

  

Microsoft Visual C++ Runtime Library
  Runtime Error!
  Program: [path to our application]
  R6002
  - floating point support not loaded

据微软(on this page)称,可能的原因是:

  • 机器没有FPU(不是这种情况:客户有英特尔酷睿2双核CPU,自486SX以来我没见过没有FPU的机器)
  • printf或scanf与浮点格式规范一起使用,但程序中没有FP变量(我们的应用程序包含FP变量,但我很确定我们从不使用带有FP格式的printf或scanf)
  • 与FORTRAN有关(我们的应用程序中没有FORTRAN代码)

此外,错误发生在他们使用我们的应用程序时(特别是在他们选择要处理的文件之后),而不是在应用程序启动时。

我意识到这是一个很长的镜头,但是之前有人见过这样的事吗?谷歌是非常无益的(有很多不受支持的说法,它是某种病毒感染的症状,但除此之外很少)。

感激地收到任何建议: - )

3 个答案:

答案 0 :(得分:2)

您是否链接了CRT的静态版本?如果是这样,您需要在调用printf()的二进制文件中使用浮点变量。并且必须真正使用这些变量(即没有被comppiler优化)。

另一种可能性是CRT初始化和使用这些FP例程的代码之间的竞争,但这很难产生。

答案 1 :(得分:2)

R6002可能是由printf尝试打印包含百分号的字符串引起的。 这种printf失败的根本原因很可能是一个操纵任意文件并打印其名称的程序。令我惊讶的是,确实有人将百分号放在文件名中! (是的,我意识到这在技术上是合法的。)

答案 2 :(得分:0)

printf("%f \ n",(float)rand()/ RAND_MAX);

我在使用VS2010命令行cl编译的程序中遇到了相同的运行时错误。 报告的错误发生没有(浮动)强制转换,当我添加它时消失了。