错误LNK2038:不匹配检测
error LNK2038: mismatch detected
关于这个问题有很多问题,但我正在努力找到适合我的答案。我有特定的错误信息:
gurobi_c++mdd2010.lib(Env.2010.omdd) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in DataHelper.obj
在visual studio 2010中,在x64版本中。Gurobi库是第三方软件,DataHelper是我的类。
在DataHelper中设置_ITERATOR_DEBUG_LEVEL=0
并不能解决问题,并且我似乎没有在我的文件中链接"debug".lib或.dll。我的文件中没有设置_SECURE_SCL
我试图在预处理器定义中设置_ITERATOR_DEBUG_LEVEL=2
,我得到:
C:Program Files (x86)Microsoft Visual Studio 10.0VCincludeyvals.h(113): fatal error C1189: #error : _ITERATOR_DEBUG_LEVEL > 1 is not supported in release mode.
谁能确认问题是在我这边,还是在第三方这边,并建议任何解决方法,如果它是第三方库?
谢谢梅勒妮
如果在发布模式下不支持_ITERATOR_DEBUG_LEVEL > 1
,并且错误消息暗示_ITERATOR_DEBUG_LEVEL
== 2在gurobi_c++mdd2010.lib
中,那么该库或其依赖项之一必须是调试构建。
这可能是值得调查的角度,所以检查这里,并确保您链接正确的库,基于您的项目设置。
我在从VS2005迁移到VS2010的解决方案中遇到了类似的问题。它有两个项目,一个静态库和一个可执行文件。显然,有多种方法可以指示VS2010将静态库链接到可执行文件中。其中一种方法是通过可执行项目属性页上的"框架和引用"。点击"添加新引用…"并在这里添加静态库,它将给出OP问题中描述的链接器错误,因为它不关心调试与发布构建-它将为两者抓取相同的静态库,这导致两者中的一个出现错误。我的解决方案是删除引用(点击"删除引用"),然后使用"链接器>输入>附加依赖项"answers"链接器>常规>附加库目录"。
需要链接gurobi_c++md2010。mdd2010.lib代替gurobi_c++ .
mdd中的第二个d表示调试
- Qt SQLite没有查询或参数计数不匹配
- 模板参数推导失败,函数参数/参数不匹配
- 在使用累加时,C++中的运算符+不匹配
- C++ 与操作员不匹配<<
- 在 Arduino 上使用 sscanf 会导致与 const char * 不匹配,并且返回值始终相同,尽管输入值不同
- 与'operator='不匹配(操作数类型'String'且"void")
- C++模板/别名 - 模板参数列表中参数 1 处的类型/值不匹配
- C4018:类内有符号、无符号不匹配
- 我在 .h 中有一个枚举类,并且在.cpp错误中有一个运算符重载:与"运算符<<不匹配
- 为什么我收到错误:"运算符<<不匹配?
- RE2 不匹配非 ASCII 字符
- 检测到 Conan 配置文件设置与 CMake 之间的编译器版本不匹配
- 检测到"运行时库"的不匹配LNK2038:值"MT_StaticRelease"与 xxx.obj 中的值"MTd_StaticDebug"不匹配
- 检测到来自同一 Visual Studio 2015 项目的源文件的对象文件的'RuntimeLibrary'不匹配
- C++ / Boost 文件系统 - 检测到"_MSC_VER"不匹配:值'1700'与值"1600"不匹配
- LNK2038:检测到"boost_log_abi"不匹配:值'v2s_mt_nt5'与值"v2s_mt_nt6"不匹配
- 错误 LNK2038:检测到"_MSC_VER"不匹配:值 '1600' 与 CppFile1.obj 中的值"1700"不匹配
- 错误LNK2038:不匹配检测
- LNK2038:检测到与 cuda 'RuntimeLibrary'不匹配
- 检测到"运行时库"不匹配