2013-05-07 79 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代表調試。