c++ - "cannot find -lQt5Core -lQt5Gui etc"使用其他不相关的库时

标签 c++ qt boost qt5 qmake

问题已解决(向下滚动)

我在 Windows 7 上使用 MinGW 进行编译。

我在 QtCreator 3.01 (Qt 5.2.1) 中创建了一个新的 Qt 应用程序。我编译它,弹出空的应用程序窗口,一切都很棒。但是一旦我使用任何其他库(如 boost 或 gtest),我就会在编译时开始出现这些错误

cannot find -lqtmain
cannot find -lQt5Widgets
cannot find -lQt5Gui
cannot find -lQt5Core

ld 返回了 1 个退出状态

这是我的 .pro 文件

#-------------------------------------------------
#
# Project created by QtCreator 2014-04-19T14:17:24
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Thermovision
TEMPLATE = app

include(Model/Model.pri)
include(Controller/Controller.pri)
include(View/View.pri)
include(Interface/Interface.pri)


SOURCES += \
    main.cpp

HEADERS  += \
    logdebug.h

FORMS    +=

OTHER_FILES += \
    Model/Model.pri \
    View/View.pri \
    Controller/Controller.pri \
    Interface/Interface.pri \
    Globals/zGlobals.pri

INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/

INCLUDEPATH += $$PWD/../../../../../../../MinGW/msys/1.0/local/include
DEPENDPATH += $$PWD/../../../../../../../MinGW/msys/1.0/local/include

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../../Downloads/boost_1_54_0/boost_1_54_0/stage/lib/ -lboost_thread-mgw48-mt-1_54
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../../../Downloads/boost_1_54_0/boost_1_54_0/stage/lib/ -lboost_thread-mgw48-mt-1_54d

这是main.cpp

#include <iostream>
#include <QApplication>
#include "View/form.h"
#include <boost/thread.hpp>
using namespace std;


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

    boost::thread b;

    return a.exec();
}

当我评论 boost 线程的使用时,包含和 .pro 文件中负责查找 boost 线程库的部分会再次编译。当我尝试使用 gtest 时也是如此。

奇怪的是我在互联网上的任何地方都找不到关于这个问题的任何信息:<

有人可以帮助我吗?

============================================= ================================== [解决了] 好的,看来 qt 希望我明确地将库添加到项目中。我使用了生成以下输出的内置工具

win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/libQt5Core.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/libQt5Cored.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/Qt5Core.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/Qt5Cored.lib

但我相信有人可以把它变薄(我会坚持下去)

最佳答案

根据我们的评论和结果,似乎一个快速的解决方案是明确添加您希望使用的库。它会在后台生成类似这样的东西,所以基本上使用静态库而不是动态库:

win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/libQt5Core.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/libQt5Cored.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/Qt5Core.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/Qt5Cored.lib

或者,我个人建议更多的是现在在您的项目文件中添加以下行,以使用动态库而不是静态库来使您的应用程序二进制文件运行良好:

LIBS += -L$$PWD/../../../../../../../Qt/Qt5.2.1/5.2.1/mingw48_32/lib/

关于c++ - "cannot find -lQt5Core -lQt5Gui etc"使用其他不相关的库时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23182897/

相关文章:

c++ - 关于 shared_ptr 的竞争条件示例

c++ - 流式文件增量编码/解码

c++ - Qt GUI 不能像我预期的那样与 std::thread 一起工作

qt - 如何使Qt Creator以与Qt库中的函数相同的方式显示我的函数的弹出文档?

c++ - GCC .obj 文件输出不确定(.debug_info,PROGBITS 部分)

c++ - BGL 中在哪里定义了 color_map?

c++ - Eclipse IDE Arduino (Sloeber) C++ String in class error does not name a type

c++ - 在 Qt C++ 中处理鼠标事件

c++ - 如何使用qt删除嵌套的xml元素

c++ - 与 Mac OS X 上的间接依赖关系的链接问题