Qt链接器错误:找不到-lQtCored

时间:2013-08-20 17:17:46

标签: qt mingw linker-errors qtgui qtcore

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都存在于指定的目录中 文档没有多大帮助。

这个专业文件几天前工作了,因为我安装了Qt 5.1后似乎有问题(这还没用过,我还在使用Qt4)。

平台:Windows 7,MinGW,Qt 4.8.4

2 个答案:

答案 0 :(得分:1)

无需链接到任何Qt库。

如果你正在使用Qt Creator,你需要确保在工具 - 选项 - 构建和放大器中正确识别Qt 4.8.4。运行 - 套件。由于您安装了5.1,因此可能不再适用。然后为您的项目设置4.8.4工具包并进行编译(清理构建目录有时也会有所帮助)。

答案 1 :(得分: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安装箱,或者您需要明确地调用所需的qmake,例如C:\path\to\my\desired\qmake