zoukankan      html  css  js  c++  java
  • error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”

    原文链接

    • 问题描述:VisualStudio2010开发的C++程序,加入第三方库的h和cpp文件后,编译运行报错如下:errorLNK2038:检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值“0”不匹配值“2”问题分析:_ITERATOR_DEBUG_LEVEL是记录编译模式的系统变量,0表示当前工程是Debug版本,2表示当前工程是Release版本。可能原因一:错误25errorLNK2038:检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:值
    • 问题描述:Visual Studio 2010开发的C++程序,加入第三方库的h和cpp文件后,编译运行报错如下:

      error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“0”不匹配值“2”

      问题分析:_ITERATOR_DEBUG_LEVEL是记录编译模式的系统变量,0表示当前工程是 Debug 版本,2表示当前工程是 Release 版本。

      可能原因一:

      错误 25 error LNK2038: 检测到“_ITERATOR_DEBUG_LEVEL”的不匹配项:  值“0”不匹配值“2”

      产生这个问题的原因是当前工程是Debug版本,而引用的库文件时Release版本。

      “_ITERATOR_DEBUG_LEVEL”的不匹配项: 值“2”不匹配值“0”   

      如果检测到上面问题则说明是Release模式引用了Debug的库文件。这类问题在引用文件时要注意版本的匹配

      解决方法:解决方案--》属性--》链接器--》输入--》附加依赖项中修改lib文件名称。Debug模式下只是用Debug模式dll文件的文件名,Release模式下只是用 Release 模式的dll。(Debug模式dll文件的文件名末尾通常会带d,入)

      可能原因二:项目属性设置错误,解决方案--》属性--》C/C++--》代码生成--》运行库 属性。

      该属性在debug模式下应设置"多线程调试 DLL (/MDd)",release模式下应该设置为“多线程 DLL (/MD)”。如果设置反了也会出现上述问题。

      结局方法:根据模式修改运行库属性就行。

      可能原因三:如果上面两种原因都不是,就可能是代码中给_ITERATOR_DEBUG_LEVEL变量人为赋值了。

      例如 BasicExcel.cpp文件中有如下语句:

      #ifdef _DEBUG
      #define _ITERATOR_DEBUG_LEVEL 0	// speedup iterator operations while debugging
      #endif
      代码中在Debug模式下将_ITERATOR_DEBUG_LEVEL设置为0,希望能在 Debug模式下加速程序运行,这样在 Debug模式下_ITERATOR_DEBUG_LEVEL值不匹配,也可能出现上述问题。  

      解决方法:程序中修改_ITERATOR_DEBUG_LEVEL为合适值就可以解决问题。

  • 相关阅读:
    linux共享库的版本控制
    c++:自己动手实现线程安全的c++单例类
    c++设计成员变量可动态调整的动态类结构
    c++中std::set自定义去重和排序函数
    python网络编程调用recv函数完整接收数据的三种方法
    c++ 以二进制和以文本方式读写文件的区别
    c++和python如何实现主机字节序和网络字节序的相互转换
    线控性能比拼,MKZ与CRV作为自动驾驶开发平台的全面测评
    css 简易 loading 加载图
    Element UI 中被隐藏的滚动条
  • 原文地址:https://www.cnblogs.com/SunkingYang/p/11049108.html
Copyright © 2011-2022 走看看