| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [QT, mingw] Как получить "всё в одном флаконе"? |
| Автор: mosg 15.3.2008, 23:46 |
| Доброго времени суток, для знающих и не знающих! К сожалению, вопрос не относится чисто к тематике кроссплатформ и Qt инструменту, но непосредственно связан с Qt, что и дало повод написать тут. Вопрос в следующем: как можно собрать "цельную" static программу.exe со встроеной DLL'кой (mingw32.dll), т.е. чтобы после переноса на другой ПК (той же архитектуры и ОС) программа не зудила, что не может найти библиотеку mingw32.dll, которая весит всего-от ~ 12Kb. Стоит сразу сказать, что это не вопрос, типа "как в статике собрать Qt программу"! Тут проблемы не возникают. Возможно кто-то уже имел опыт подобной реализации (например, с dll2lib или чем-то другим) Спасибо! |
| Автор: powerfox 16.3.2008, 00:18 |
Должна быть такая же статическая библиотека + вам надо пересобрать Qt (если этого ещё не сделали). Я бы просто сделал инсталлятор, который бы копировал в системную папку все нужные dll файлы. |
| Автор: mosg 16.3.2008, 00:37 | ||
Я немного сглупил, и не сказал, что я компиляю/линкую с помощью средств компирятора MinGW. Т.е. саму библиотеку Qt я уже собрал в статике, и файл приложения весит свои порядочные ~ 9Mb, но т.к. прога собирается с помощью MinGW, то требует наличие файла mingw32.dll. Инсталятор исключается, это подпрограмма, дополнение, т.е. скорей функция - нужен только exe'шник. Хотя для больших проектов я бы так и поступил. |
| Автор: mosg 29.3.2008, 22:08 |
| Решение: пересобрать Qt надо без флага (-mthreads), т.к. именно это влияет на "потребность" qt-программы в файле mingw32.dll Т.е.: 1) в файле ~\Qt\X.X.X\mkspecs\win32-g++\qmake.conf удалить любое упоминание о -mthreads 2) пересобрать Qt, как обычно 3) пересобрать прогу, как обычно ЗЫ: Да, неудобно, но работает за-то 100% + думаю, что не стоит объяснять последствия такого принудительного отключения флага -mthreads |
| Автор: Denjs 31.3.2008, 12:05 | ||
где-то была опция для файла поекта которая делает почти тоже самое но бех глобальных последствий. и там-же было написано что "mthreads нужен для потокобезопасной обработки исключений , и если вы не используете исключения - оно вам не нужно..."... приведено на правах цитаты по памяти... <_< |
| Автор: SABROG 1.4.2008, 10:50 |
При этом каждая по 6-8 гигов... |
| Автор: archimed7592 4.4.2008, 00:04 |
Это какой версии Qt? 25-ой что ль? Нужен он [ещё] для корректного прохода ислючения через границу dll(даже в одном потоке). |
| Автор: mosg 12.4.2008, 00:01 |
| Вот, кстати, http://lists.trolltech.com/qt-interest/2006-08/thread00942-0.html достаточно интересная дискуссия касательно тематики поста - для любознательных |