【发布时间】:2012-07-24 10:14:34
【问题描述】:
在调试二进制文件中使用 3rd 方库的发布版本是一种不好的做法吗?
我正在使用第 3 方库并编译了发布 .lib 库。我的 exe 处于调试模式开发。然后我得到了:
error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '0' doesn't match value '2' in test1.obj
经过一番谷歌搜索后,我发现这是因为我试图将发布与调试混合在一起,我可能应该在调试模式下编译库,否则会混淆 _ITERATOR_DEBUG_LEVEL 宏。但我只是好奇这是否是推荐的方式以及为什么。我需要为我打算使用的每个 3rd 方库编译并记录发布和调试二进制文件,这似乎很麻烦,这很快就会很多,同时无意调试这些代码。
【问题讨论】:
-
您是否无法联系此第 3 方以获取调试版本或自己构建调试版本?
-
这不仅仅是一种不好的做法:几乎可以保证程序要么崩溃要么做坏事。在 VS2010 之前,您无论如何都可以链接,以在运行时发现奇怪的错误。现在至少你被阻止了。
-
@JesseGood 是的,我有源代码,我刚刚编译了调试版本。问题解决了。我只是想知道我是否可以摆脱编译和跟踪一种模式。显然不是!
-
它在 Windows 上,但它不应该。在调试模式下编译所有内容可能会导致总的程序速度和周转时间不可接受。考虑构建 webkit 引擎并在调试模式或某种解释器语言中使用它。但正如答案所说,在没有动态运行时 DLL 链接的情况下使用 DLL 时,您可能会侥幸成功
-
@AlexandreC。你确定VS2010?你说VS2010也失败了。但是现在我从 VS2010 转到 VS2019 第一次看到这个错误。
标签: c++ visual-studio-2010 visual-studio