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

时间:2014-09-12 11:54:25

标签: c++ visual-c++ boost

我想用VC ++ 2008试用Apache Thrift并遇到不可预见的问题。在Debug Build中,我在VC ++运行时库中得到错误"string iterators incompatible"。我将其跟踪到boost::lexical_cast<std::string>(int)的调用,并能够在一个简单的测试程序中触发错误。

以下因上述迭代器错误而失败(这是使用boost 1.55):

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

在具有正确行为的Release版本中,一切正常。由于某种原因,这一行只在thrift代码中失败,并在最小的测试程序中工作。

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

我已经没有想法了,我可以尝试解决这些问题吗?

1 个答案:

答案 0 :(得分:0)

问题是由于调试版本使用了thrift释放模式库而引起的。