1

关于这个问题有很多问题,但我正在努力寻找适合我的答案。我有具体的错误信息:

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 库是第 3 方软件,DataHelper 是我的班级。

DataHelper 中的设置_ITERATOR_DEBUG_LEVEL=0不能解决问题,而且我的文件中似乎没有链接到“调试”.lib 或 .dll。_SECURE_SCL未在我的文件中设置。

我试图_ITERATOR_DEBUG_LEVEL=2在预处理器定义中设置,我得到:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\yvals.h(113): fatal error C1189: #error :  _ITERATOR_DEBUG_LEVEL > 1 is not supported in release mode.

任何人都可以确认问题是在我这边还是在第 3 方,如果是第 3 方库,可以提出任何解决方法吗?

谢谢梅兰妮

4

3 回答 3

1

如果_ITERATOR_DEBUG_LEVEL > 1在发布模式下不支持并且错误消息暗示_ITERATOR_DEBUG_LEVEL== 2 in gurobi_c++mdd2010.lib,则该 lib 或其依赖项之一必须是 Debug 构建。

可能值得研究这个角度,因此请检查此处并确保根据您的项目设置链接正确的库。

于 2013-05-08T04:31:17.167 回答
0

我从 VS2005 迁移到 VS2010 的解决方案遇到了类似的问题。它有两个项目,一个静态库和一个可执行文件。显然有多种方法可以指示 VS2010 将静态库链接到可执行文件中。其中一种方法是通过可执行文件项目的属性页上的“框架和引用”。单击“添加新引用...”并在此处添加静态库,它将给出 OP 问题中描述的链接器错误,因为它不关心调试与发布版本 - 它会为两者获取相同的静态库,这会导致两者之一出错。我的解决方案是删除引用(单击“删除引用”),然后使用“链接器 > 输入 > 附加依赖项”和“链接器 > 常规 >

于 2014-03-04T22:40:16.393 回答
0

您需要链接 gurobi_c++md2010.lib 而不是 gurobi_c++mdd2010.lib。

mdd 中的第二个 d 代表调试。

于 2015-04-16T05:43:20.417 回答