编写使用静态库的动态libr时出错

时间:2014-08-06 07:21:26

标签: c++

我正在编写一个可编译为.dll的maya插件,但在代码中我使用了boost的静态库。当我在调试模式下编译我的代码时,出现了这样的错误:

libboost_regex-vc100-mt-gd-1_55.lib(instances.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in pluginMain.obj

有谁能帮我弄清楚原因并提供解决方案?

1 个答案:

答案 0 :(得分:1)

这意味着您已使用不同的迭代器调试/安全设置将正则表达式库编译到主项目中。有两种不同的迭代器设置受到影响:

  1. 检查迭代器 - 这些确保不会覆盖容器的边界
  2. 迭代器调试 - 检测到错误的迭代器使用并在违规时断言
  3. Iterator调试级别有三个可能的值:

    • 级别0表示:禁用已检查的迭代器并禁用迭代器调试
    • 级别1表示:启用已检查的迭代器并禁用迭代器调试
    • 级别2表示:启用迭代器调试

    第2级是默认值。

    最快捷的方法是从预处理器定义中删除以下条目

    _ITERATOR_DEBUG_LEVEL = 0
    

    在你的dll项目中。

    有关详细信息,请查看此文章:http://msdn.microsoft.com/en-us/library/hh697468.aspx