5

我的项目是编译和运行调试OK和VS释放模式2010年 今天我试图用VS 2012编译它,我得到这个错误:编译从Visual Studio 2010年至2012 RC结果的MFC应用程序在LNK2038

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”。

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

+0

你刚才复制文件到2012文件夹或创建一个新项目并导入? – 2012-08-04 11:27:42

+0

我复制了这些文件。 – Wartin 2012-08-04 11:36:47

+0

_MSC_VER是一个预定义的宏,因此它是内置的,你不会在源中找到它。 (显然它的值在VS2010中是1600,在VS2012中是1700)。你是否复制了任何二进制文件,VS2010内部的任何内容,编译目标文件?你确定新编译器没有试图访问较旧的库吗?做VS2012编译的新项目吗? – 2012-08-04 13:42:29

回答

5

貌似你在vc2012中使用vc2010中的.lib(猜测它看起来像一个PCRE库)。你需要重新编译所有的.libs或运行时链接(即LoadLibrary,GetProcAddress等)。

0

不,您需要的只是检查项目的属性。存在旧的项目文件的链接。需要在页面上打开项目属性“.NET Framework和链接”那里删除所有链接结束为新的2012项目文件添加新的。

3

在项目属性中,选择常规,然后将“平台工具集”设置更改为“Visual Studio 2010(v100)”。在完成之后,我的代码可以与原始库一起编译。

+0

,反之,如果你的问题是1700到1600(而不是问题中的1600到1700),你可以做相反的事情。 Per http://stackoverflow.com/questions/19575747/error-lnk2038-mismatch-detected-for-msc-ver-value-1600-doesnt-match-valu – metao 2013-11-15 03:52:29

相关问题