在 Windows 上通过 QMake 构建共享库,包括 Qt 库

Building Shared library including Qt libs via QMake on Windows

我想使用 QMake+mingw 在 Windows 上创建一个 Dll,其中包括一些自定义小部件和依赖的 Qt 库(linked 到一个库中)。这可以通过 QMake 实现吗?

到目前为止我尝试过的:

正在创建共享库项目,并将 LIBS 添加到 .pro 文件:

QT       += widgets
TARGET = testqtdll
TEMPLATE = lib
DEFINES += TESTQTDLL_LIBRARY
SOURCES += testqtdll.cpp widget.cpp
HEADERS += testqtdll.h testqtdll_global.h widget.h
FORMS += widget.ui
LIBS += -lqt5core -lqt5gui -lqt5widgets

这样生成的 dll 不包含 QT 库。

正在创建静态库项目,linkqt 静态库。然后在:

之后创建dll
QT       += widgets    
TARGET = testqtlib
TEMPLATE = lib
CONFIG += staticlib    
SOURCES += testqtlib.cpp widget.cpp
HEADERS += testqtlib.h widget.h
FORMS += widget.ui
LIBS += c:/Qt/Static/5.3.1/lib/Qt5Core.a
LIBS += c:/Qt/Static/5.3.1/lib/Qt5Gui.a 
LIBS += c:/Qt/Static/5.3.1/lib/Qt5Widgets.a

这样生成的库也不包含 QT 库。

我终于找到了解决办法。应该使用 Qt 静态构建来创建这样的 dll。工作项目文件:

QT       += core gui widgets
CONFIG += static dll
TARGET = testqtdll
TEMPLATE = lib
DEFINES += TESTQTDLL_LIBRARY
SOURCES += testqtdll.cpp widget.cpp
HEADERS += testqtdll.h testqtdll_global.h widget.h
FORMS += widget.ui