我正在使用VS2010进行构建,构建一个导致许多链接错误的库:
error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2'
导致我不得不同时发布库的发布版本和调试版本的情况出现了。 我没有理由发布库的调试版本,这只会使二进制分发变得臃肿。但是在调试模式下构建的客户端代码拒绝链接我的发布库。
我曾经看到过这个问题,但他们似乎没有问对问题。 我知道为什么会出现这个错误(嗯,有点;我不确定是什么精确地发出了依赖项。你知道吗?),但我想知道的是如何消除这个依赖项在我的库中发生的问题?
类似于当使用冲突的CRT时会抱怨库的情况,可以通过/Zl(从对象文件中省略默认库名称)来防止,那么肯定也有一种方法可以防止将此依赖项发射到我的库中,对吗?
我只想生成一个能够链接调试或发布代码的单个优化库。客户端代码调试库并不重要。几乎没有第三方库会提供不同的调试和发布版本。供应商是如何避免这个问题的呢?
有人知道是什么精确地导致了这个链接依赖关系,以及我如何完全禁用它或将其从我的代码中分离出来吗?