我刚从Qt 5.3.1为Windows x86和MSVC 2013构建静态库。第二步显然是使用这些库的静态链接应用程序。所以我创建了一个小应用程序(只是带有一些控件的MainWindow,用于测试目的)。这是我的* .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:\statics\lib\ -lQt5Core \
-LC:\statics\lib\ -lQt5Gui \
-LC:\statics\lib\ -lQt5Widgets \
-LC:\statics\lib\ -lqtmain \
-LC:\statics\lib\ -lQt5PlatformSupport \
INCLUDEPATH += C:\statics\include
呀。这是我从使用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),但错误仍然存在。
感谢您的回答:)
答案 0 :(得分:0)
QT += core gui
LIBS += -LC:\statics\lib\ -lQt5Core \
-LC:\statics\lib\ -lQt5Gui \
您正在两次加载两个Qt库:默认版本和自定义版本。默认情况下,QT包含core和gui库...您必须手动删除它们:
QT -= core gui
答案 1 :(得分:0)
只需从项目文件中删除LIBS
,INCLUDEPATH
,然后在项目文件的静态构建中运行qmake即可创建makefile。如果这样做无法帮助您检查PATH