我有一个第三方静态库,它也与C / C ++运行时静态链接。我只有这个库的发布版本。
当我尝试将此库链接到我的应用程序的调试版本时,链接器会抱怨静态库(0)的迭代器调试级别与我的应用程序级别(2)不匹配。
有没有办法强制链接器忽略此错误?我希望能够在调试模式下使用此库添加的功能,并且无法获得此库的调试版本。
顺便说一句,我不能立即想到这种定义不匹配会引起的任何问题。
答案 0 :(得分:3)
标准说“在更改容器后未定义迭代器”之类的东西。某些调试模式STL将检查此错误,而大多数释放模式STL将不会检查。在调试模式下,容器或迭代器类中有额外的成员变量来实现这些检查。
因此混合调试和释放STL版本将不起作用,因为容器或迭代器类中的字节数可能不同。对于在调试和发布模式之间具有不同成员变量的任何类,都会发生同样的情况。