我试图使用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‘,以避免不匹配。有人能帮忙吗?干杯,佩亚姆
发布于 2014-08-05 11:29:14
此错误可能是将调试生成和在同一个可执行文件或dll中发布的版本混合在一起造成的。
使用/MDd而不是/MD发布静态库的版本,而应用程序是发布中的/MD。在静态库项目中设置正确的/MD解决了这个问题。
这是在properties中完成的
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,在所有项目和源中删除或适当设置它们,并重新构建所有内容。
_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,反之亦然!
https://stackoverflow.com/questions/13306305
复制相似问题