【发布时间】:2012-08-02 05:48:54
【问题描述】:
我的项目在 VS 2010 的调试和发布模式下编译和运行正常。 今天我尝试用 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”。
所以我想知道如何解决这个问题。
【问题讨论】:
-
您是刚刚将文件复制到 2012 文件夹还是创建了新项目并导入?
-
_MSC_VER 是一个预定义的宏,因此它是内置的,您不会在源代码中找到它。 (显然它的值在 VS2010 中为 1600,在 VS2012 中为 1700。)您是否复制了任何二进制文件,VS2010 固有的任何内容,编译的目标文件?您确定较新的编译器不会尝试访问较旧的库吗?你用 VS2012 创建的新项目能编译吗?
-
嘿,看看我发现了什么:Help with Linker error LNK2038 !
-
不要混合使用 VS2010 编译的 .lib 文件和使用 VS2012 编译的 .obj 文件。编译器不保证对象布局在不同版本的编译器之间是兼容的,尤其是来自标准 C++ 库的那些。重建一切。
标签: c++ visual-studio-2010 mfc linker-errors visual-studio-2012