Boost lexical_cast<std::string>(int) MSVC 2008 bug

Boost lexical_cast<std::string>(int) MSVC 2008 bug

本文关键字:int MSVC bug 2008 gt string lt lexical std Boost cast      更新时间:2023-10-16

我想使用VC++2008试用Apache Thrift,但遇到了一些无法预见的问题。在调试构建中,我在VC++运行库中得到错误"string iterators incompatible"。我追踪到对boost::lexical_cast<std::string>(int)的调用,并能够在一个简单的测试程序中触发该错误。

以下由于提到的迭代器错误而失败(这是使用boost 1.55):

std::string test = boost::lexical_cast<std::string>(5);

在具有正确行为的Release构建中,一切都很好。由于某种原因,这一行只在节俭代码中失败,并且在最小的测试程序中工作。

我已经尝试将_HAS_ITERATOR_DEBUGGING设置为0,但这没有任何效果,因为调试运行库是使用此标志集编译的。即使在调试版本中,我也尝试选择发布多线程运行时dll,但这并没有导致使用发布dll。这甚至是一个坏主意,因为我使用了其他链接到调试运行时dll的boost编译库。

我已经没有主意了,我该怎么解决这些问题呢?

问题是由于调试构建使用了旧版发布模式库而引起的。