我有一个项目是在Windows7上的Visual Studio2008 SP1中以发布模式在C++中构建的,当我构建它时,我不断得到:
致命错误C1047:对象或库文件'.\Release\foobar.obj‘是使用比其他对象旧的编译器创建的;请重新生成旧的对象和库。
链接时出现错误。
我试着删除特定的目标文件并重新构建,但没有修复它。我也试过清除整个发布、构建文件夹和重建,但也没能修复它。有什么想法吗?
发布于 2009-05-10 00:33:47
我建议重新安装VS2008 SP1。您是否同时安装了不同的VS (例如VS Express)?已知这会对现有的VS安装造成干扰。
您可以尝试通过在Visual Studio命令提示符下运行cl.exe
和link.exe
来检查编译器和链接器的版本。
发布于 2013-07-02 23:36:50
我有这个问题,但我的解决方案不同:
对我来说,罪魁祸首是一个包含的外部库被编译为
/GL (=Enable link-time code generation under
C/C++/ Optimization / Whole Program Optimization)
使用较旧的visual studio (2005)。我在2005年重新构建了这个库,没有使用/GL,链接器错误在2008年消失了。正如MSDN声明的那样,它与/LTCG设置有关,这是由/GL标志自动设置的:http://msdn.microsoft.com/en-us/library/ms173554%28v=vs.80%29.aspx
发布于 2018-05-09 01:48:24
我能够通过以下步骤在VS 2015中解决这个问题。
1在所有组件中关闭/GL
C/C++ >优化>整个程序优化>否
在.VCXPROJ文件中,它是:
<WholeProgramOptimization>false</WholeProgramOptimization>
关闭/LTCG
库>常规>链接时间代码生成
<LinkTimeCodeGeneration>false</LinkTimeCodeGeneration>
2更重要的一步,确保所有组件都来自相同的目录。我的主要EXE是使用:
Release Include
$(WindowsSdkDir)include\um;$(WindowsSdkDir)include\shared;$(UniversalCRT_IncludePath);$(VCInstallDir)include;$(VCInstallDir)atlmfc\include;$(WindowsSdkDir)include;$(FrameworkSDKDir)\include
Release Library
$(VC_LibraryPath_x86);$(WindowsSdk_71A_LibraryPath_x86);
.lib正在使用不同的目录(错误):
Release Include
$(VC_IncludePath);$(WindowsSDK_IncludePath);
Release Library
$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);$(NETFXKitsDir)Lib\um\x86
我将.lib目录更改为与.exe相同,编译错误消失了。
https://stackoverflow.com/questions/837073
复制相似问题