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

boost_thread segmentation fault on application start up

本文关键字:thread 分段 错误 boost 启动 应用程序      更新时间:2023-10-16

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

我需要使用在 Boost 中分发的线程库。因此,我已成功使用英特尔编译器编译了 Boost 1.54。

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

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_>() 

引发异常。即使我无法到达主要功能的第一行。

可能是什么问题?

问候。

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

简单的解决方案:

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

更复杂的:

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