Q 在调试构建中使用发布库

Q Using release lib in debug build

我们仅从合作伙伴处收到现成的已编译库作为发布版本。正如预期的那样,它在我们的发布版本中运行良好,但在调试版本中使用它时也运行良好(用于我们的内部测试或调试会话)

现在发生了一些变化,最新版本的库在调试版本中不再工作 我收到错误

mismatch detected for 'RuntimeLibrary': value 'MD_DynamicRelease' doesn't match value 'MDd_DynamicDebug' in main.obj

我明白为什么现在会出现,但我不明白为什么在旧版本中没有出现。旧版本也设置了错误的 RuntimeLibrary 但不知何故它并没有影响链接器......? (我用 DUMPBIN 来寻找标志)

我们认为我们发现了问题: 库中只有一个对象使用 C++/STL 功能 这在 lib 的早期版本中没有被(我们)使用。但是他们更改了一些其他函数,现在他们使用这些函数 -> 链接器现在正在添加 C++ 代码并正确地抱怨它。

进一步发现: 你可以混合 debug/release 代码,只要你不使用运行时库中的任何东西。