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

我们有一个使用Visual C ++ 2005构build的应用程序,有一个客户报告说他得到了这个运行时错误

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

根据微软( 在这个页面上 ),可能的原因是:

  • 该机器没有FPU(不是这种情况:客户有一个Intel Core 2 Duo CPU,自从486SX以来我没有看到没有FPU的机器)
  • printf或scanf与浮点格式规范一起使用,但程序中没有FPvariables(我们的应用程序包含FPvariables,但是我确信我们从不使用printf或scanf与FP格式)
  • 与FORTRAN(在我们的应用程序中没有FORTRAN代码)

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

我意识到这是一个远射,但是有没有人在任何地方见过这样的事情? 谷歌是相当无益的(有很多没有支持的声称,这是一种病毒感染的症状,但除此之外很less)。

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

Solutions Collecting From Web of "客户在使用我们的应用程序时得到R6002运行时错误"

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

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

printf尝试打印包含百分号的字符串可能导致R6002。 这种printf失败的根本原因很可能是一个处理任意文件并打印其名称的程序。 令人惊讶的是,真的有人把百分号放在文件名中! (是的,我知道这在技术上是合法的。)

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

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