Статическая dll на Qt4



  • Здравствуйте!

    Есть две сборки qt 4.8.4 - static и shared на mingw32 4.7.
    Есть проект - бибилиотека dbconnect, которая в работе использует классы qt, но экспортирует только обычные функции со стандартными типами параметров (т.е, ни классы, ни что-то специфичное для qt вообще не экспортируется).
    В итоге должна получиться статическая dbconnect.dll, не зависящая от библиотек qt.
    Если собирать на shared, то dbconnect.dll получается, но она, само собой, зависит от библиотек qt и mingw.
    Если собирать на static, то получается dbconnect.a Да, это статическая библиотека, но в другом смысле, мне-то нужна статическая dll...

    Вопрос такой: как на статической qt получить .dll вместо .a?



  • Я, конечно, не такой знаток архитектуры... но разве существуют "статические DLL"? Сама аббревиатура DLL подразумевает "динамичность". Знаю есть понятия динамической и статической ЗАГРУЗКИ DLL, но не самих DLL.

    То что создается файл *.a - оно и понятно - это библиотечный файл, который при компиляции приложения просто целиком "войдет" в итоговый *.exe.



  • Под статической dll я имел в виду то, что в неё будет включён весь необходимый код qt, и она не будет для своей работы требовать библиотек Qt. В этом и есть смысл статических сборок самого Qt, нет?



  • Проблема решилась очень просто.
    Достаточно в файл .pro добавить CONFIG += dll (гугл подсказал). Размерчик dll - почти 10 метров (core, gui, sql)... Сжимается upx-ом примерно в 3 раза. Попробовал вызвать из проги на паскале - всё работает и каши/лишних dll не просит.

    Кстати, чтобы собрать статическую (.a) библиотеку в shared Qt, нужно в .pro добавить CONFIG += staticlib


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.