应用程序启动时boost_thread分段错误

时间:2013-09-21 14:02:38

标签: c++ boost eclipse-cdt

我正在使用Eclipse Indigo在Ubuntu 12.04 LTS上使用OpenCV 2.4.6.1版本开发一个图像处理应用程序。我使用英特尔ICC编译器版本14.

我需要使用Boost中分发的Thread Library。这样我就成功地用英特尔编译器编译了Boost 1.54。

要使用以下代码段进行编译,将-lboost_thread开关添加到链接器的标志列表中:

boost::this_thread::sleep_for(oneFrameProcessDuration -(boost::chrono::high_resolution_clock::now() - startTime));

此整体应用程序编译成功后。当我开始申请时,

boost::exception_ptr boost::exception_detail::get_static_exception_object<boost::exception_detail::bad_alloc_>() 

异常被抛出。即使我无法在我的主要功能上达到第一线。

可能是什么问题?

问候。

1 个答案:

答案 0 :(得分:1)

我今天遇到了同样的问题。由于这个问题似乎是谷歌的热门话题,并且没有答案,所以这里是:

简单的解决方案:

如果您只需要线程,而没有锁定和计时等所有其他内容,则可以包含#include <boost/thread/thread.hpp>而不是#include <boost/thread.hpp>。这种方式与-lboost_thread链接就足够了,也可能需要-lboost_system,无法测试它,因为我的代码的其他部分也需要它。

越复杂:

如果您需要更多内容,则可能需要链接更多提升库,例如-lboost_chrono-lboost_date_time。有关详细信息,请参阅http://www.boost.org/doc/libs/1_59_0/doc/html/thread/build.html