我可以 link 使用与我使用的库不同的 _ITERATOR_DEBUG_LEVEL 项目吗?

Could I link project with different _ITERATOR_DEBUG_LEVEL than the libraries I use?

我需要调试处理大量数据的程序。数据量无法减少 - 我遇到的问题只发生在特定数据集上。

由于处理的数据量,_ITERATOR_DEBUG_LEVEL 开始成为一个问题 - 在调试中,程序慢得多,以至于永远无法完成。所以我设置了 _ITERATOR_DEBUG_LEVEL=0 并重新编译了项目。

但是,重新编译项目后,它与调试库不兼容。我收到此错误。

1>libboost_program_options-vc100-mt-gd-1_55.lib(options_description.obj) : error LNK2038: mismatch detected for '_ITERATOR_DEBUG_LEVEL': value '2' doesn't match value '0' in ADProvider.obj

我的问题是:是否可以忽略此错误并 link 项目而不顾一切?只要它运行,我不关心可能的后果。我真的需要调试问题。

不同的预构建 Boost 库背后的原因恰恰是它们不是二进制兼容的。换句话说,类型 foo 的对象可能在内存中具有不同的布局,具体取决于这些设置,例如不同的尺寸。因此,混合是不可能的。

现在,您可以做的是在不添加诊断的情况下编译变体(即不进行迭代器调试,这是为了捕获一些未定义行为的情况)但仍然带有调试符号,因此您可以单步执行代码。我不确定当前状态,但最后我看到那些不在默认预构建的 Boost 库中。