Как правильно собрать приложение Qt с динамической библиотекой?
Доброго времени суток.
Есть собранная статически библиотека (dll-файл). Исходники, .a-файл тоже имеются. Теперь нужно используя эту библиотеку написать приложение так, чтобы оно не тянуло с собой весь фреймворк Qt, а использовало то, что есть в библиотеке. Статически линковать приложение нельзя, потому что получается что библиотека весит 18Мб и приложение ровно столько же, хотелось бы разделить функционал библиотеки и функционал приложения.
Я попробовал собрать приложение компилятором Qt из коробки с подключенной библиотекой, но при запуске приложение сразу пытается найти Qt5Core.dll.
Разобрался. Оказывается все решается в два щелчка: в исходники библиотеки нужно было добавить __declspec(dllexport) перед расшаренными функциями/классами.
То есть библиотека собрана статически, но линковать нужно динамически? Почему бы не собрать библиотеку динамически (выкинув оттуда зависимость от ICU) + windeployqt?
Александр: получается само приложение использует Qt, и библиотека использует Qt? Если все будет слинковано динамически с Qt, то объем будет меньше, за счет того, что тянутся только используемые компоненты, притом всего один раз (вместо двух: для библиотеки и для приложения). Либо я все еще чего-то недопонимаю, и вам стоит описать ситуацию подробнее.
Постараюсь объяснить :)
Сейчас есть только библиотека (mylib.dll), которая использует Qt.
Нужно написать приложение, которое не будет использовать Qt вообще, но оно должно в полном объеме использовать функционал библиотеки mylib.dll.
Т.е. сама библиотека, допустим, имеет функцию createWindow() - по факту эта функция создает QWidget и отображает его, но в моем приложение мне не нужно знать что делает эту функция, мне нужен лишь доступ к этой функции, чтобы я просто мог вызвать функцию и произойдет то, что должно произойти =)