2

可能重复:
LNK2038,迭代器不匹配错误,需要忽略

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

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

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

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

4

1 回答 1

4

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

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

于 2013-01-02T20:41:14.833 回答