我遇到了Visual 2008 SP1中的问题。
编译器产生:
'/ fp:fast'和'/ 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
如您所见,/ fp:fast已设置但未设置/ 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"
您是否知道为什么可能会创建第二个临时文件?我的项目中是否有必须修复的属性?
[编辑]感谢Hans,我发现了这个问题。我在项目中的一个文件有一个不同的编译器选项,我不知道是什么导致了这个问题。感谢buildlog.htm文件
我找到了哪一个答案 0 :(得分:4)
看到编译器不止一次启动是对问题根源的强烈暗示。您可能在项目中有一些/ Za单独打开的源代码文件。快速解决方法是使用Shift +单击选择项目中的所有文件并重置选项。
答案 1 :(得分:1)
在Visual Studio 2008中,项目->属性->配置属性-> C / C ++->语言,将“禁用语言扩展”从“是(/ Za)”更改为“否”。
答案 2 :(得分:0)
我的猜测是你在VS2008上使用了错误的WinCE版本 - 你好像在这里编译ARM,是吗?我对vc80.pdb
的引用引起了我的怀疑,_WIN32_WCE
表面上是一个VS2005复古符号文件。也许这是你正在移植的VS2005项目?
问题here表示您不应手动定义{{1}},您可以尝试将其与正确的Platform SDK定义相关联的建议。