如何忽略LNK2038(定义不匹配)?

时间:2013-01-02 20:32:33

标签: c++ visual-studio linker-errors

  

可能重复:
  LNK2038, iterator mismatch error, need to ignore

我有一个第三方静态库,它也与C / C ++运行时静态链接。我只有这个库的发布版本。

当我尝试将此库链接到我的应用程序的调试版本时,链接器会抱怨静态库(0)的迭代器调试级别与我的应用程序级别(2)不匹配。

有没有办法强制链接器忽略此错误?我希望能够在调试模式下使用此库添加的功能,并且无法获得此库的调试版本。

顺便说一句,我不能立即想到这种定义不匹配会引起的任何问题。

1 个答案:

答案 0 :(得分:3)

标准说“在更改容器后未定义迭代器”之类的东西。某些调试模式STL将检查此错误,而大多数释放模式STL将不会检查。在调试模式下,容器或迭代器类中有额外的成员变量来实现这些检查。

因此混合调试和释放STL版本将不起作用,因为容器或迭代器类中的字节数可能不同。对于在调试和发布模式之间具有不同成员变量的任何类,都会发生同样的情况。