c++ - Qt 对 boost::system::generic_category() 的 undefined reference

标签 c++ qt boost qmake

目前正在尝试在 Qt 应用程序中使用 boost 线程(我知道 Qt 有自己的线程函数,但在这里我使用 boost),但无论我做什么,我都会遇到链接器错误。网上有很多关于这个问题的问题,但到目前为止我还没有能够解决它。我确实知道我的 boost 东西工作正常,因为我可以使用 code::blocks 应用程序中的所有 header ,但我只是链接到 boost/stage/libs 文件夹中的每个文件。

最简单的错误示例就是在文件中包含 boost/thread.hpp header

#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

谢谢。

最佳答案

您似乎在这里犯了一个拼写错误:

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

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

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

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

-lboost_system \
-lboost_filesystem \
-lboost_thread

关于c++ - Qt 对 boost::system::generic_category() 的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19200911/

相关文章:

C++ 使用 boost 对字符串进行标记并将标记保存为字符串

c++ - 在另一个类中实现一个类的对象

依赖项上的 C++ 动态链接会导致冲突吗?

c++ - Qt QList - removeAll 释放内存

qt - 错误 : 'qmlRegisterType' was not declared in this scope

c++ - 无法在动态链接库中找到过程入口点

c++ - 绑定(bind)C++成员变量: getter/setter or raw pointer?

c++ - 没有匹配的函数来调用 ‘normalize(cv::Point3f&)’ 错误

c++ - 如何在运行时指定 boost multi_array 的退化维度?

c++ - 在迭代器中包装链表