4

我在 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"

您知道为什么会创建第二个临时文件吗?我的项目中是否有我必须修复的属性?

[编辑] 感谢汉斯,我找到了问题所在。我在项目中的一个文件有一个不同的编译器选项,我不知道是哪个导致了问题。由于 buildlog.htm 文件,我找到了它是哪一个

4

3 回答 3

4

多次看到编译器启动是对问题根源的强烈暗示。您可能在项目中有一些单独打开 /Za 的源代码文件。一个快速的解决方法是使用 Shift+Click 选择项目中的所有文件并重置该选项。

于 2012-05-07T13:33:52.857 回答
1

在 Visual Studio 2008 中,项目 -> 属性 -> 配置属性 -> C/C++ -> 语言,将“禁用语言扩展”从“是(/Za)”更改为“否”。

于 2019-11-14T08:22:01.193 回答
0

我的猜测是您在 VS2008 中使用了错误版本的 WinCE - 您似乎在这里为 ARM 编译,是吗?vc80.pdbVS2005 老式符号文件表面上的引用引起了我的怀疑。也许这是您要移植的 VS2005 项目?

这里的问题表明您不应该手动定义_WIN32_WCE,您可以尝试它提供的建议,以便将其与正确的 Platform SDK 定义相关联。

于 2012-05-07T10:55:35.940 回答