2

現在、Qt アプリケーションでブースト スレッドを使用しようとしています (Qt には独自のスレッド機能があることはわかっていますが、ここではブーストを使用しています)。何をしてもリンカー エラーが発生します。この問題についてネット上でたくさんの質問がありますが、これまでのところ解決できていません。code::blocks アプリケーションですべてのヘッダーを使用できるため、ブーストが正しく機能することはわかっていますが、boost/stage/libs フォルダー内のすべてのファイルにリンクしただけです。

問題が発生する最も単純な例は、boost/thread.hpp ヘッダーをファイルに含めることです。

#include "MainWindow.h"
#include <QApplication>

#include <boost/thread.hpp>

int main(int argc, char *argv[]) {
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}

そして、これは私に次のエラーを与えます。

C:\boost_1_53_0\boost\system\error_code.hpp:214: error: undefined reference to                `boost::system::generic_category()'

これは、ブースト ライブラリにどのようにリンクしたかを示す .pro ファイルです。

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = BoostTest
TEMPLATE = app

INCLUDEPATH += C:/boost_1_53_0/
LIB += -LC:/boost_1_53_0/stage/lib/ \
    -lboost_system-mgw47-1_53 \
    -lboost_filesystem-mgw47-mt-1_53 \
    -lboost_thread-mgw47-mt-1_53

SOURCES += main.cpp\
           MainWindow.cpp

HEADERS  += MainWindow.h

FORMS    += MainWindow.ui

ライブラリの順序付けのすべての順列を試したので、問題はリンクされている順序ではないことがわかりました。まず第一に、上記のリンクの構文が正しいかどうか、第二に疑問に思っています。実際に正しいファイルを含めている場合。私もリンクしてみました

-lboost_system \
-lboost_filesystem \
-lboost_thread

しかし、私の stage/libs/ フォルダーには上記のさまざまなバージョンが大量に含まれているため、どのバージョンがリンクされているのかわかりませんでした。私が持っているboost_systemファイルだけを示す写真が添付されています。どれをリンクする必要がありますか?

ここに画像の説明を入力

ありがとう。

4

1 に答える 1