2015-08-18 1 views
1

Я хотел бы создать Dll для Windows с использованием QMake + mingw, который включает в себя некоторые пользовательские виджеты и зависимые библиотеки Qt (связанные в одну библиотеку). Может ли это быть достигнуто через QMake?Создание общей библиотеки, включая Qt libs через QMake в Windows

То, что я пытался до сих пор:

Создание совместного проекта библиотеки и добавление 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 

Таким образом, в результате чего дллы не включают СПОКОЙНУЮ LIBS.

Создание проекта статической библиотеки и ссылки qt static libs. Затем создайте 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 

Таким образом, в результате lib также не включает библиотеки QT.

+0

в случае с проектом общей библиотеки, вы также должны связать статические библиотеки, как вы это делали ниже. – UmNyobe

+0

Не работают, они не добавляются к вызову компоновщика – simon

+0

Можете ли вы опубликовать снимок зависимостей «testqtdll»? Нам нужно увидеть эффективную связь полученной библиотеки – UmNyobe

ответ

0

Я нашел решение в конце концов. Для создания такой DLL следует использовать статическую сборку Qt. Рабочий файл проекта:

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