Клиент получает ошибку времени выполнения R6002 при использовании нашего приложения - PullRequest
2 голосов
/ 20 января 2011

У нас есть приложение, созданное на Visual C ++ 2005, и один клиент сообщил, что он получает эту ошибку времени выполнения:

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

Согласно Microsoft ( на этой странице ), возможные причины этого:

  • на машине нет FPU (не в этом случае: у клиента есть процессор Intel Core 2 Duo, и я не видел машины без FPU с 486SX)
  • printf или scanf используется сСпецификация формата с плавающей точкой, но в программе нет переменных FP (наше приложение содержит переменные FP, но я уверен, что мы никогда не используем printf или scanf с форматами FP)
  • Что-то связанное с FORTRAN (в нашем коде нет кода FORTRANapp)

Кроме того, ошибка возникает, когда они используют наше приложение (в частности, сразу после выбора файла для обработки), а не при запуске приложения.

Я понимаю, что это длинный выстрел, но имеетВы видели что-нибудь подобное раньше?Google был довольно бесполезен (было много неподтвержденных утверждений, что это был симптом какой-то вирусной инфекции, но очень мало, кроме этого).

Любые предложения с благодарностью получили: -)

Ответы [ 3 ]

2 голосов
/ 20 ноября 2012

R6002 может быть вызвано тем, что printf пытается напечатать строку, содержащую знак процента. Скорее всего, основной причиной такого сбоя printf является программа, которая манипулирует произвольными файлами и печатает их имена. Удивительно, но действительно есть люди, которые ставят знаки процента в именах файлов! (Да, я понимаю, что это технически законно.)

2 голосов
/ 20 января 2011

Связываете ли вы статическую версию CRT? Если это так, вам нужно иметь переменные с плавающей точкой в ​​двоичном файле, который вызывает printf (). И эти переменные должны быть действительно использованы (т.е. не оптимизированы компилятором).

Другой возможностью является гонка между инициализацией CRT и кодом, который использует эти подпрограммы FP, но это было бы трудно произвести.

0 голосов
/ 03 апреля 2015

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

Я столкнулся с той же ошибкой во время выполнения в программе, скомпилированной с командной строкой VS2010 cl. Сообщенная ошибка произошла без приведения (float) и исчезла, когда я ее добавил.

...