正在将我的项目从VS2012转换为in 201。但是在某些项目中,我得到了一个_MSC_VER链接器错误。在谷歌上浏览了很长时间后,我发现这个问题是由于VS2012中创建的一个库与VS2015的链接所致。
我怎样才能找出是哪个投影造成了错误?这里我引用错误:错误LNK2038错配检测到的'_MSC_VER':值'1700‘不匹配值'1900’在xxxx.obj
为“_MSC_VER”检测到的错误LNK2038失配:值'1700‘与xxxx.obj中的'1900’值不匹配
发布于 2019-01-14 18:48:52
这表示您的一些代码或静态库是使用Visual 2012编译器& C/C++运行时标头/库构建的,而其他代码则是使用Visual 2015编译器& C/C++运行时标头/库构建的。
虽然某些类型的链接在VisualC++(旧式C、extern "C"
函数、COM接口等)版本之间是稳定的,但所有的C++链接都依赖于版本。标准C++库(a.k.a )尤其如此。标准模板库( Standard Template Library),它将内存布局从版本更改为版本,以便在运行时崩溃。
为了防止这种情况,库将_MSC_VER
链接标记添加到输出代码模块中,以便在链接时捕获这些类型的不匹配。
通过设计,Visual Studio 2017/2019的C/C++运行时已与Visual Studio 2015 Update 3 C/C++ Runtime兼容,以简化采用。这不是正常的模式,2012年的VS与2015/2017/2019的VS不兼容。见这篇博客文章和Microsoft。
https://stackoverflow.com/questions/54175280
复制相似问题