1

我一直在尝试运行一个简单的 c++ 程序,该程序作为多线程编程的示例提供给我。我知道它在另一台安装了 boost 的机器上运行,但我试图在 Xcode 中运行它,这给我带来了一些问题。

首先,我尝试使用我现有的 boost 版本来运行它。但是我遇到了很多错误,在进行了一些研究之后,我发现我需要将我的 boost 版本从 1.47 更新到 1.52,以修复 1.47 中包含的一些已知线程错误。

这解决了我的许多错误,但仍然抛出了一些错误。所以我发现我必须使用此处找到的补丁来修补 1.52:https ://svn.boost.org/trac/boost/attachment/ticket/7671/libcpp_c11_numeric_limits.patch

毕竟,我仍然收到一个链接器错误,提示“找不到 -lboost_thread 的库”

现在在 Xcode 中,我有以下项目设置: 在搜索路径下,我将头文件和库搜索路径设置为“usr/local/include/” - - 在链接下,我将其他链接器标志设置为“-lboost_thread”

我在 usr/local/lib/ 中有一个 lboost_thread.a 和一个 lboost_thread.dylib。我如何让 xCode 找到这个,因为它似乎应该解决我的问题。

此外,如果它在这里有帮助是我正在运行的代码:

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

using namespace std;

void printNum(char c, int num)
{
    for(int i = 0; i < num; i++)
    {
        cout << c << i << endl;
    }
}

int main()
{
    cout << "Boost threads!" << endl;
    boost::thread t(printNum, 'b', 100);
    printNum('a', 100);
    cout << "Good bye!" << endl;
}

错误图片: 错误

显示文件所在位置的图像: libboost_thread.a

显示我的构建设置的图像: xCode 构建设置

4

2 回答 2

1

我不知道为什么链接器没有找到库,但我可以告诉你如何规避库搜索问题:将完整路径添加/usr/local/lib/libboost_thread.a到其他链接器标志构建设置,不带 -l 或 -L。

于 2012-12-05T18:33:36.953 回答
0

你的截图说/usr/local/lib/libboost_thread.a建议是使用-I/usr/local/lib/libboost_thread.a也许就是这样。

于 2015-01-05T16:14:53.173 回答