使用静态库编写动态库时出现错误

Get Error when writing dynamic libr which would use static lib

本文关键字:错误 动态 静态      更新时间:2023-10-16

我正在编写一个maya插件,它将被编译为。dll,但在代码中我使用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
谁能帮我找出原因并提供解决方案?

这意味着您已经在主项目中使用不同的迭代器调试/安全设置编译了regex库。有两种不同的迭代器设置会受到影响:

  1. 检查迭代器-确保容器的边界不被覆盖
  2. 迭代器调试-检测不正确的迭代器使用并断言违反

Iterator调试级别有三个可能的值:

  • 级别0表示:禁用检查迭代器并禁用迭代器调试
  • 级别1意味着:启用检查迭代器并关闭迭代器调试
  • 级别2表示:启用迭代器调试

级别2为默认值。

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

_ITERATOR_DEBUG_LEVEL = 0

在DLL项目中。

查看这篇文章了解更多细节:http://msdn.microsoft.com/en-us/library/hh697468.aspx