使用Qt对boost :: system :: generic_category()的未定义引用

时间:2013-10-05 17:54:57

标签: c++ qt boost qmake

目前尝试在Qt应用程序中使用boost线程(我知道Qt有自己的线程函数,但在这里我使用boost)但是无论我做什么,我都会遇到链接器错误。网络上有很多关于这个问题的问题,但到目前为止我还没能解决它。我知道我的增强功能正常,因为我可以使用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文件,显示了我如何链接到boost库。

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文件的图片。哪些应该链接?

enter image description here

感谢。

1 个答案:

答案 0 :(得分:2)

你似乎在这里写了一个错字:

LIB += -LC:/boost_1_53_0/stage/lib/ \

这应该是(注意变量末尾的复数形式):

LIBS += -LC:/boost_1_53_0/stage/lib/ \

...是的,你应该使用这个公式,而不是你最初写的长版本:

-lboost_system \
-lboost_filesystem \
-lboost_thread