关于这个问题有很多问题,但我很难找到适合我的答案。我有特定的错误消息:
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。 <{1}}未在我的文件中设置。
我尝试在预处理器定义中设置_SECURE_SCL
,然后得到:
_ITERATOR_DEBUG_LEVEL=2
任何人都可以确认问题是在我这边或在第三方方面,如果它是第三方库,建议任何解决方法吗?
由于 梅拉妮
答案 0 :(得分:1)
如果在发布模式下不支持_ITERATOR_DEBUG_LEVEL > 1
并且错误消息暗示_ITERATOR_DEBUG_LEVEL
中的gurobi_c++mdd2010.lib
== 2,则该lib或其某个依赖项必须是Debug构建。
可能值得调查这个角度,所以check here并确保根据项目设置链接正确的lib。
答案 1 :(得分:0)
我从VS2005迁移到VS2010的解决方案遇到了类似的问题。它有两个项目,一个静态库和一个可执行文件。显然有多种方法可以指示VS2010将静态库链接到可执行文件。其中一种方法是通过属性页上的“框架和引用”来获取可执行文件的项目。单击“添加新引用...”并在此处添加静态库,它将提供OP问题中描述的链接器错误,因为它不关心调试与发布版本 - 它将为两者获取相同的静态库,这导致两个中的一个出错。我的解决方案是删除引用(单击“删除引用”),然后使用“链接器&gt;输入&gt;附加依赖项”和“链接器&gt;常规&gt;其他库目录”。
答案 2 :(得分:0)
您需要链接gurobi_c ++ md2010.lib而不是gurobi_c ++ mdd2010.lib。
mdd中的第二个d代表调试。