0

我不断收到此错误消息,不知道为什么。

dyld:库未加载:libboost_thread.dylib 引用自:/Users/adhg/Documents/workspace_cpp/Boost_101/Release/Boost_101 原因:找不到图像

编码:

#include <iostream>
#include <boost/thread.hpp>

void workerFunction() {
 boost::posix_time::seconds workTime(3);
 std::cout << "Worker: running" << std::endl;
 boost::this_thread::sleep(workTime);
 std::cout << "Worker: finished" << std::endl;
}

int main() {
 std::cout << "main: startup" << std::endl;
 boost::thread workerThread(workerFunction);
 std::cout << "main: waiting for thread" << std::endl;
 workerThread.join();
 std::cout << "main: done" << std::endl;
 return 0;
}

我所做的只是按照这里和许多其他地方的说明进行操作,基础知识:

  1. 下载提升
  2. 解压到文件夹
  3. ./bootstrap.sh
  4. ./bjam

您会注意到 usr/local/boost... 是我实际放置文件夹的位置(它存在),在 usr/local/boost_1_54_0/stage/lib 下我有 libboost_thread 等等。仍然......不知道为什么我会收到这个错误。

我的设置现在看起来像这样:

在此处输入图像描述

在此处输入图像描述

谁能指出我做错了什么?

4

1 回答 1

2

这看起来是一个动态链接问题,从一些研究来看,这似乎可以通过将DYLD_LIBRARY_PATH环境变量设置为指向库所在的位置(在你的情况下,/usr/local/boost_1_54_0/stage/lib)来解决。您可能希望阅读这个类似的问题以及这个外部页面,后者指出

发生这种情况是因为我从源代码构建了 boost 并将其保留在本地。因此库的路径不是默认路径。为了解决这个问题,我们必须编辑环境变量 DYLD_LIBRARY_PATH,它类似于 linux LD_LIBRARY_PATH

(另外,我只想提一下,如果你只对线程功能感兴趣,而不是对整个 Boost 感兴趣,你可以使用 C++11 的<thread>标头。)

于 2013-07-07T13:47:21.313 回答