在LNK2038中编译Visual Studio 2010到2012 RC的MFC应用程序

Compiling a MFC app from Visual Studio 2010 to 2012 RC results in LNK2038

本文关键字:RC 2012 MFC 应用程序 2010 LNK2038 编译 Visual Studio      更新时间:2023-10-16

我的项目正在VS 2010中以调试和发布模式编译并运行OK。今天我试图用VS 2012编译它,但我得到了这个错误:

1>  Generating Code...
1>pcrecppd.lib(pcrecpp.obj) : error LNK2038: mismatch detected for '_MSC_VER': 
value '1600' doesn't match value '1700' in NamesEditorDlg.obj

我在代码中搜索了"_MSC_VER",但找不到任何匹配项。我也找不到"1600"或"1700"。

所以我想知道如何解决这个问题。

看起来您正在vc2012中使用vc2010中的.lib(猜测它看起来像PCRE库)。您需要使用DLL(即LoadLibrary、GetProcAddress等)重新编译所有.lib或运行时链接。

在"项目属性"中,选择"常规",然后将"平台工具集"设置更改为"Visual Studio 2010(v100)"。完成此操作后,我的代码使用原始库进行了良好的编译。

查看http://msdn.microsoft.com/en-us/library/b0084kay.aspx这个变量似乎包含编译器的版本号。我认为修复它的最好方法是在2012年创建一个新项目,并将源文件添加到新项目中。

否,您所需要的只是检查项目的属性。存在指向旧项目文件的链接。需要在页面".NET Framework和链接"上打开项目属性,那里有del所有链接,最后为新的2012项目文件添加新的。