Visual Studio “P1”版本“20080116”和“P2”版本“20070207”之间的Il不匹配

c6ubokkw  于 2023-02-24  发布在  其他
关注(0)|答案(4)|浏览(631)

我正在构建MFC应用程序,其中使用其他C++库。我使用的是VS 2008,并在VS 2008中编译了所有的库项目。
它在调试模式下编译良好,但在调试Unicode模式、发布、发布Unicode模式下运行失败。
我在网上发现VS 2008SP1是需要安装的,但它怎么会在调试模式下编译呢?
请建议如何克服这个问题。

t9aqgxwy

t9aqgxwy1#

如果编译一个包含多个项目的解决方案,您应该使用相同的编译器(版本)编译所有项目,以确保其正常工作。
我曾经收到过和你一样的错误信息。如果我没记错的话,这个问题是因为使用了 link time code generation。我的解决方案是 rebuild all,另一个解决方案可能是禁用 link time code generation

7ajki6be

7ajki6be2#

在Microsoft术语中,P1是解析器(前端),P2是代码生成器(后端)。启用链接时代码生成(LTGC)后,P1的结果存储在文件中,P2稍后在链接时执行。
如果您 * 降级 * 了编译器,您应该进行完全重建,否则链接步骤将尝试使用不兼容的P1输出,这将触发该错误。
如果您 * 升级了 * 编译器,Visual Studio会自动执行完全重新生成,因此这种情况永远不会发生(如果无论如何都要发生,只需执行完全重新生成即可)。

ztigrdn8

ztigrdn83#

我在使用Visual Studio 2015时也遇到了这个问题。问题出在我链接到我的项目的一个库中,它是使用VS2015 Update 3构建的。对我有效的解决方案是-将Visual Studio更新到2015 Update 3。

omjgkv6w

omjgkv6w4#

在我的情况下,我刚刚安装了Microsoft Visual Studio 2008 Service Pack 1(安装程序),解决了这个问题。Service Pack可以从以下链接下载:
https://www.microsoft.com/en-us/download/confirmation.aspx?id=10986

相关问题