首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >误差LNK2038失配检测

误差LNK2038失配检测
EN

Stack Overflow用户
提问于 2012-11-09 10:28:48
回答 1查看 1.3K关注 0票数 3

我试图使用Geant4 (物理库)运行一段代码,并试图在VS2010上编译它。似乎有些Geant4库与我的C++库有匹配问题。在编译过程中,我得到了大量类似的错误,如下所示:

libG4Tree.a(G4ASCIITree.o):错误LNK2038 :为“_ITERATOR_DEBUG_LEVEL”检测到的不匹配:值'0‘不匹配mismatch example1.OBJ中的值'2’

并在我的.a库中使用超过100个不同的G4文件获取此错误。我真的需要关闭调试级别('0')。否则,G4代码将需要数年时间才能运行。因此,我需要找到在我的_ITERATOR_DEBUG_LEVEL中定义的这个VS2010在哪里,并将它设置为'0‘,以避免不匹配。有人能帮忙吗?干杯,佩亚姆

EN

回答 1

Stack Overflow用户

发布于 2014-08-05 11:29:14

此错误可能是将调试生成和在同一个可执行文件或dll中发布的版本混合在一起造成的。

使用/MDd而不是/MD发布静态库的版本,而应用程序是发布中的/MD。在静态库项目中设置正确的/MD解决了这个问题。

这是在properties中完成的

代码语言:javascript
复制
Select Configuration Properties / C C++ / Code Generation in the tree
and the option Runtime Library set to the same on all your dependencies projects and application.

搜索_ITERATOR_DEBUG_LEVEL和_SECURE_SCL,在所有项目和源中删除或适当设置它们,并重新构建所有内容。

代码语言:javascript
复制
_ITERATOR_DEBUG_LEVEL = 0 // disabled (for release builds)
_ITERATOR_DEBUG_LEVEL = 1 // enabled (if _SECURE_SCL is defined)
_ITERATOR_DEBUG_LEVEL = 2 // enabled (for debug builds)

简而言之,您可能正在混合发布和调试dll。不要在调试中链接发行版dll,反之亦然!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13306305

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档