1

マルチスレッドプログラミングの例として与えられた単純な c++ プログラムを実行しようとしています。ブーストがインストールされた別のマシンで実行されることはわかっていますが、Xcode で実行しようとしていますが、これによりいくつかの問題が発生しています。

最初に、既存のバージョンのブーストで実行しようとしました。しかし、多くのエラーが発生しており、いくつかの調査を行った後、1.47 に含まれるいくつかの既知のスレッド化バグを修正するために、ブースト バージョンを 1.47 から 1.52 に更新する必要があることがわかりました。

これで多くのエラーが修正されましたが、まだいくつかスローされていました。そのため、ここにあるパッチを使用して 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 に答える