2012-05-07 1 views
3

Я столкнулся с проблемой в Visual 2008 SP1.'/ fp: fast' и '/ Za' несовместимо с Visual C++

Выход компилятора:

'/ Ф.П.: быстрый' и '/' Za не совместимы

Проблема заключается в том, что я не использовал/Za в свойствах .. так Я не понимаю, почему должен быть конфликт, когда опция не задана.

здесь генерируемый командная строка в моих свойствах проекта:

/Od /I "..\..\..\..\..\tools\gsoap-soapcpp-2.7.6\src" /I "..\..\..\..\..\platform\vs2008\win32\gsoap-soapcpp-2.7.6\src" 
/D "WIN32" /D "_DEBUG" /D 
"_CONSOLE" /D "YY_NO_UNISTD_H" /D "_WIN32_WCE=0x700" /D "UNDER_CE" /D "WINCE" /D 
"DEBUG" /D "ARM" /D "_ARM_" /D "_UNICODE" /D "UNICODE" /Gm /EHsc /MTd /fp:fast /GR- 
/Fo"Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53/" /Fd"Freescale i.MX53 QSB - WEC7 
(ARMv4I)\Debug IMX53/vc80.pdb" /W3 /nologo /c /TP /wd4996 

Как вы можете видеть,/FPA: быстро устанавливается, но не/Za.

Есть ли другой вариант, который косвенно может ссылаться на/Za?

Порывшись немного больше, я понял, что файл BuildLog.htm говорил:

Creating temporary file "(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000341365424.rsp" with content 

[{CORRECT COMMAND LINE} 

{list of source files paths} 
] 

Creating command line "cl.exe @"(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000341365424.rsp" /nologo" 
Creating temporary file "(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000441365424.rsp" with content 
[ 
{WRONG COMMAND LINE containing /Za} 
{list of source files paths} 
] 
Creating command line "cl.exe @"(...)\Freescale i.MX53 QSB - WEC7 (ARMv4I)\Debug IMX53\RSP00000441365424.rsp"/nologo" 

Есть ли у вас какие-либо идеи, почему это второй временный файл может быть создан? Есть ли свойство, которое я должен исправить в своем проекте?

[EDIT] Спасибо Гансу, я понял проблему. Один из моих файлов в проекте имел другой вариант компилятора, о котором я не знал, из-за которого возникла проблема. Я нашел, какой он был благодаря файлу buildlog.htm

+0

Ничего себе. Если я передам это сообщение с кавычками, этот вопрос является единственным результатом. Для записи у меня тоже нет подсказки. Удачи! – Thomas

+0

Попробуйте * явно * добавить переключатель '/ Ze'. –

+0

Я только что обновил свое первое сообщение с новой информацией – djfoxmccloud

ответ

4

Увидев, что компилятор начинает работу более одного раза, это сильный намек на источник проблемы. Вероятно, у вас есть файлы исходного кода в проекте, у которых/Za включен отдельно. Быстрое исправление заключается в том, чтобы выбрать все файлы в проекте с помощью Shift + Click и сброса опции.

0

Я предполагаю, что вы используете неправильную версию WinCE для VS2008 - вы, кажется, компилируете для ARM здесь, да? Мои подозрения вызваны ссылкой на vc80.pdb, которая на первый взгляд представляет собой старинный файл символов VS2005. Может быть, это проект VS2005, который вы переносите?

Вопрос here указывает, что вы не должны вручную определять _WIN32_WCE, вы можете попробовать предложение, которое оно позволяет соотнести это с правильным определением платформы SDK.

+0

Ну, я не определяю его вручную. Он установлен в WIN32_WCE = $ (CEVER), который затем обрабатывается как «_WIN32_WCE = 0x700». Что касается vc80.pdb, да, мой проект - это проект, который был обновлен с 2005 по 2008 год. – djfoxmccloud

+0

Я боюсь, что мой ввод был немного выстрелом в темноте, но казался слишком большим для комментария. Вы пытались импортировать код в качестве нового проекта вместо обновления? возможно, процесс обновления для этого варианта имеет одну или несколько ошибок. Есть ли какой-либо параметр в свойствах проекта GUI (или в файле .vcproj), который выглядит как VS2005-y? например. если вы видите 80, попробуйте изменить его на 90 (после резервного копирования оригинала).Интересно, вы каким-то образом собрали библиотеку VS2005, которая не совместима с VS2008. –

+0

Ну, похоже, это не проблема, но мне, возможно, придется ее изменить. благодаря – djfoxmccloud