Qt 5.3.1 -静态构建导致链接器错误

Qt 5.3.1 - static building results in linker errors

本文关键字:链接 错误 构建 静态 Qt      更新时间:2023-10-16

我刚刚用MSVC 2013从Windows x86的Qt 5.3.1构建了静态库。第二步显然是使用这些库的静态链接应用程序。因此,我创建了一个小应用程序(只是一个带有一些控件的主窗口,用于测试目的)。这是我的*.pro文件:

QT       += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = projectname
TEMPLATE = app
CONFIG += static
SOURCES += main.cpp
        mainwindow.cpp
HEADERS  += mainwindow.h
FORMS    += mainwindow.ui
LIBS += -LC:staticslib -lQt5Core 
        -LC:staticslib -lQt5Gui 
        -LC:staticslib -lQt5Widgets 
        -LC:staticslib -lqtmain 
        -LC:staticslib -lQt5PlatformSupport 
INCLUDEPATH += C:staticsinclude

是的。这是我从几个教程/我的记忆中得到的,当我使用5.1时。但是当编译时,我得到这些错误:

Qt5Core.lib(Qt5Core.dll):-1: error: LNK2005: "public: __thiscall QString::~QString(void)" (??1QString@@QAE@XZ) allready defined in mainwindow.obj.
mainwindow.obj:-1: error: LNK2019: Unresolved extern symbol ""public: static struct QArrayData const * const QArrayData::shared_null" (?shared_null@QArrayData@@2QBU1@B)" in Funktion ""public: __thiscall QString::QString(void)" (??0QString@@QAE@XZ)".
moc_mainwindow.obj:-1: error: LNK2001: Unresolved extern symbol ""public: static struct QMetaObject const QMainWindow::staticMetaObject" (?staticMetaObject@QMainWindow@@2UQMetaObject@@B)".

有人知道如何处理这些错误吗?我必须链接到一些其他库没有提到上面,或包括一些文件?我在谷歌上搜索了这个话题,发现很多人都遇到了同样的问题,但他们大多使用旧版本的Qt oder VS.我也试图将项目导出到Visual Studio(从Qt Creator工作),但错误仍然存在。

谢谢你的回答

QT += core gui
LIBS += -LC:staticslib -lQt5Core 
    -LC:staticslib -lQt5Gui 

你加载两个Qt库两次:默认和自定义版本。默认情况下,QT包含核心库和gui库…必须手动删除:

QT -= core gui

从项目文件中删除LIBS, INCLUDEPATH,并在项目文件上运行静态构建中的qmake来创建makefile。如果这没有帮助,检查你的PATH