我一直收到此错误消息但不知道原因。
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;
}
我所做的只是按照here和其他许多地方的说明进行操作:
你会注意到usr / local / boost ...是我实际放置文件夹(它存在)的地方,在usr / local / boost_1_54_0 / stage / lib下我有libboost_thread等等。仍然......不确定为什么我会收到此错误。
我的设置现在看起来像这样:
任何人都可以指出我做错了什么吗?
答案 0 :(得分:2)
这看起来是一个动态链接问题,通过一些研究,似乎可以通过将DYLD_LIBRARY_PATH
环境变量设置为指向库所在的位置来解决(在您的情况下,{{ 1}})。您可能希望阅读this similar question和this external page,其中后者表示
这种情况发生了,因为我从源代码构建了boost并将其保持在本地。因此,库的路径不是默认路径。要解决这个问题,我们必须编辑环境变量DYLD_LIBRARY_PATH,这类似于linux LD_LIBRARY_PATH
(另外,我只想提一下,如果你只对线程功能感兴趣而不是整个Boost感兴趣,你可以使用C ++ 11的<thread>
标题。)