2013-05-07 103 views
1

在这个问题上有很多问题,但我正在努力为我解决问题。我有特定的错误信息:错误LNK2038:检测到不匹配

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.0\VC\include\yvals.h(113): fatal error C1189: #error : _ITERATOR_DEBUG_LEVEL > 1 is not supported in release mode. 

任何人都可以确认问题是在我的身边,或者在第三方的一面,并提出任何解决方法,如果它是第三方图书馆?

由于 梅拉妮

+0

不小心,您是否正在建立一个具有_SECURE_SCL = 1的版本级别? (也看看这里:http://stackoverflow.com/questions/4080668/iterator-debug-level-value-0-doesnt-match-value-2) – Najzero 2013-05-07 05:57:13

+0

@Najzero:我刚刚检查,搜索可以找不到它。 – Melanie 2013-05-07 06:10:41

+0

如果在DataHelper中设置了_ITERATOR_DEBUG_LEVEL = 2,该怎么办? – 2013-05-07 06:17:34

回答

1

如果_ITERATOR_DEBUG_LEVEL > 1不释放模式中支持和错误消息意味着_ITERATOR_DEBUG_LEVEL == 2在gurobi_c++mdd2010.lib,然后要么lib或它的一个依赖必须调试版本。

这可能是值得研究这个角度的,所以check here并确保你链接正确的库,根据你的项目设置。

0

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

0

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

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