【问题标题】:Qt linker errors: cannot find -lQtCoredQt 链接器错误:找不到 -lQtCored
【发布时间】:2013-08-20 17:17:45
【问题描述】:

Qt *.pro 文件的问题:

TARGET = ProgName
TEMPLATE = app
CONFIG += console
QT += core
QT += gui

LIBS += -LC:\\Qt\\4.8.5\\bin
LIBS += -LC:\\Qt\\4.8.5\\lib
LIBS += -LS:\\lib
# LIBS += -lQtCored4         # not necessary
# LIBS += -lQtCore4
# LIBS += -lQtGuid4
# LIBS += -lQtGui4

SOURCES += ...
HEADERS += ...

我收到以下链接器错误:

:-1: error: cannot find -lQtGuid
:-1: error: cannot find -lQtCored
collect2.exe:-1: error: error: ld returned 1 exit status

所有 DLL 都存在于指定目录中。
文档没有太大帮助。

这个 pro 文件几天前工作了,自从我安装了 Qt 5.1 后它似乎出现了问题(尚未使用;我仍在使用 Qt4)。

平台:Windows 7、MinGW、Qt 4.8.4

【问题讨论】:

    标签: qt mingw linker-errors qtgui qtcore


    【解决方案1】:

    您只需要以下内容:

    TARGET = ProgName
    TEMPLATE = app
    CONFIG += console
    QT -= gui
    
    SOURCES += ...
    HEADERS += ...
    

    这是因为coregui 会自动添加到QT 变量中。但是,在这种特殊情况下,如果您希望按照您的样子构建控制台应用程序,则可以删除 gui 默认值。尽管“CONFIG += console”最终可以为您做到这一点。除此之外,一切都会自动为您工作,因此您无需将库路径传递给 qt 库等。如果您使用更多的 Qt 模块,则只需要使用 QT += widgets 和类似的行,默认情况下不存在。即使那样,您也不需要像在问题中那样设置 Qt 库路径。

    另外,如果你以后想跨平台,你不妨添加这个:

    CONFIG -= app_bundle

    避免为基于控制台的应用程序创建 Mac 包。

    如果您安装了多个版本的 Qt,您需要使用所需版本的 qmake,这样就可以了。举个例子:我在 Archlinux 系统上使用 qmake 用于 Qt 5,而在 Qt4 上使用 qmake-qt4

    在 Windows 上,您应该在不需要的路径之前的路径中有所需的 qt 安装 bin,或者您需要显式调用所需的 qmake,例如 C:\path\to\my\desired\qmake

    【讨论】:

      【解决方案2】:

      无需链接到任何 Qt 库 afaik。

      如果您使用的是 Qt Creator,您需要确保 Qt 4.8.4 在 Tools - Options - Build & Run - Kits 中被正确识别。由于您安装了 5.1,这可能不再适用。然后为您的项目设置 4.8.4 套件并编译它(有时清理构建目录也有帮助)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-02
        • 1970-01-01
        相关资源
        最近更新 更多