PDA

Просмотр полной версии : Qt - приложение требует 120 мб библиотек


eldar85
02.01.2010, 01:00
сделал гуи-приложение на Qt 4.5 по этому уроку

http://doc.crossplatform.ru/qt/4.5.0/tutorials-addressbook.html


из Qt Creator запускается и работает нормально
если открыть в проводнике папку release и запустить exe оттуда - пишет что не найдена библиотека "libgcc_s_dw2-1.dll"

нашел её в C:\Qt\2009.05\mingw\bin\

если добавить, требует QtGui.dll и ещё 3-4 библиотеки

проблема в том, что в итоге все вместе весит больше 120 мб!

что я не сделал?

POS_troi
02.01.2010, 03:13
Скомпиль статически ;)

eldar85
02.01.2010, 17:49
в том то и дело что я не знаю как... можешь объяснить пошагово как че делать.

Дикс
02.01.2010, 21:01
да, как сделать чтобы с прогой не надо было держать QtGuid4.dll - 143 мб ?

nerezus
03.01.2010, 00:42
Собирать в релизе.

eldar85
03.01.2010, 02:33
в релизе та же хрень получается...

\\ChaOs//
03.01.2010, 14:07
в релизе та же хрень получается...

В .pro допиши строчку CONFIG += release

eldar85
03.01.2010, 18:13
попробую спасибо! еще такой вопрос, присабачил я Qt в Eclipse - работает все отлично. Приложения также как и в Qt creator собираются, но у меня в эклипсе есть boost и libcurl, они отлично работают без Qt, хотел собрать ГУИ окно, чтобы с сетью через Курл работало, а библиотека libcurl никак не цепляется. если в обычной проге все легко - http://www.lsdeex.ru/archives/3 то когда делаешь КТ окно, так же сделать не получается. подскажите кто знает что можно сделать. как библиотеки (а именно libcurl) присоединять либо в Qt creator, а лучше в Эклипс с Qt.

POS_troi
03.01.2010, 19:10
Не совсем понял что ты имееш ввиду.

eldar85
03.01.2010, 22:19
я использовал libcurl и boost в Эклипсе в консоле все работало отлично, соединял библиотеки libcurl, boost как тут http://www.lsdeex.ru/archives/3 .Каждый раз когда начинаешь новый проект, нужно Курл вот так присоединять:

Создай новый проект, открой его свойства Project->Properties

Вкладка C/C++ Build -> Settings

На вкладке Tool Settings: GCC C++ Complier -> Miscellaneous добавь флаг
-DCURL_STATICLIB

Чуть ниже, MinGW C++ Linker->Libraries

добавь туда библиотеки (важен порядок в котором они расположены!)
curl
wsock32
wldap32
//================================================== ============
а теперь еще к эклипсу присоединил Qt как тут - http://habrahabr.ru/blogs/development/30636/
тоже работает, окна собираются.

Но если я хочу собрать окно на Qt чтобы оно использовало libcurl то Курл не получается присоединить потому что в Project->Properties нету вкладок C/C++ Build -> Settings.
Пробывал прописывать в файле .pro LIBS += -LC:/MinGW/lib -libcurl -libcurldll но тоже не работает. не знаю что еще можно сделать...

eldar85
03.01.2010, 23:56
и вот так пробывал LIBS += -LC:/MinGW/lib -libcurl.a -libcurldll.a и все равно #include "curl/curl.h" пишет unresolved inclision "curl/curl.h"

\\ChaOs//
04.01.2010, 00:32
и вот так пробывал LIBS += -LC:/MinGW/lib -libcurl.a -libcurldll.a и все равно #include "curl/curl.h" пишет unresolved inclision "curl/curl.h"

Путь до хидеров укажи, либо скопируй их в %QTDIR%\include\

eldar85
04.01.2010, 01:07
где этот путь прописывать, тоже в .pro ???

eldar85
04.01.2010, 01:41
кое что начинаю понимать, библиотеки подключены(потому что во вкладке libraries есть курловские библиотеки), походу этой строкой - LIBS += -LC:\MinGW\lib -libcurl -libcurldll
значит точно не хватает хидеров... теперь понять куда их поместить)))) или где путь прописать)))

eldar85
04.01.2010, 03:22
вроде разобрался, но пока не буду хвастать, пишите кто знает пока... если ща соберется все то отпишусь...

eldar85
04.01.2010, 04:05
фигня какая то... ни на че не ругается, curl/curl.h подключено, на него не показывает как на ошибку, ни одна строка не подчеркивается все вроде отлично, при компиляции вот такое выдает:


mingw32-make debug
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/Эл/workspace/qt4'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\4.4.1\include\QtCore" -I"..\..\..\..\Qt\4.4.1\include\QtCore" -I"..\..\..\..\Qt\4.4.1\include\QtGui" -I"..\..\..\..\Qt\4.4.1\include\QtGui" -I"..\..\..\..\Qt\4.4.1\include" -I"c:\Qt\4.4.1\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\4.4.1\mkspecs\win32-g++" -o debug\main.o main.cpp
In file included from C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windows.h:50,
from C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winsock2.h:22,
from ../../../../Qt/4.4.1/include/curl/curl.h:67,
from main.cpp:6:
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1689: error: declaration of C function `LONG InterlockedCompareExchange(volatile LONG*, LONG, LONG)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:393: error: previous declaration `long int InterlockedCompareExchange(long int*, long int, long int)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1693: error: declaration of C function `LONG InterlockedDecrement(volatile LONG*)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:395: error: previous declaration `long int InterlockedDecrement(long int*)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1694: error: declaration of C function `LONG InterlockedExchange(volatile LONG*, LONG)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:396: error: previous declaration `long int InterlockedExchange(long int*, long int)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1698: error: declaration of C function `LONG InterlockedExchangeAdd(volatile LONG*, LONG)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:397: error: previous declaration `long int InterlockedExchangeAdd(long int*, long int)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1702: error: declaration of C function `LONG InterlockedIncrement(volatile LONG*)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:394: error: previous declaration `long int InterlockedIncrement(long int*)' here
mingw32-make[1]: *** [debug/main.o] Error 1
mingw32-make[1]: Leaving directory `C:/Users/Эл/workspace/qt4'
mingw32-make: *** [debug] Error 2

повторюсь ни одна строка кода не подчеркивается, получается не в коде проблема...

eldar85
04.01.2010, 04:11
в .pro файле прописал LIBS += -LC:\MinGW\lib -libcurl -libcurldll

хедеры присоединил, воткнул папку curl (с хедерами) в Qt\4.4.1\include\curl
библиотеки приделаны тоже, во вкладке libraries ->libcurl.a и libcurldll.a

и все равно вот эти ошибки... ниче не пойму...

eldar85
04.01.2010, 04:57
ща заметил, что если убрать хедер curl/curl.h то ошибка не вылетает... конечно если там кода не написано, просто в пустой мэйн вписываю curl/curl.h - он не подчеркивает что чтото не правельно, а просто выдает при линковке такую хрень

mingw32-make debug
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `C:/Users/Эл/workspace/qt2'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\Qt\4.4.1\include\QtCore" -I"..\..\..\..\Qt\4.4.1\include\QtCore" -I"..\..\..\..\Qt\4.4.1\include\QtGui" -I"..\..\..\..\Qt\4.4.1\include\QtGui" -I"..\..\..\..\Qt\4.4.1\include" -I"c:\Qt\4.4.1\include\ActiveQt" -I"debug" -I"." -I"..\..\..\..\Qt\4.4.1\mkspecs\win32-g++" -o debug\main.o main.cpp
In file included from C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/windows.h:50,
from C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winsock2.h:22,
from ../../../../Qt/4.4.1/include/curl/curl.h:67,
from main.cpp:2:
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1689: error: declaration of C function `LONG InterlockedCompareExchange(volatile LONG*, LONG, LONG)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:393: error: previous declaration `long int InterlockedCompareExchange(long int*, long int, long int)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1693: error: declaration of C function `LONG InterlockedDecrement(volatile LONG*)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:395: error: previous declaration `long int InterlockedDecrement(long int*)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1694: error: declaration of C function `LONG InterlockedExchange(volatile LONG*, LONG)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:396: error: previous declaration `long int InterlockedExchange(long int*, long int)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1698: error: declaration of C function `LONG InterlockedExchangeAdd(volatile LONG*, LONG)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:397: error: previous declaration `long int InterlockedExchangeAdd(long int*, long int)' here
C:/mingw/bin/../lib/gcc/mingw32/3.4.5/../../../../include/winbase.h:1702: error: declaration of C function `LONG InterlockedIncrement(volatile LONG*)' conflicts with
../../../../Qt/4.4.1/include/QtCore/../../src/corelib/arch/qatomic_windows.h:394: error: previous declaration `long int InterlockedIncrement(long int*)' here
mingw32-make[1]: *** [debug/main.o] Error 1
mingw32-make[1]: Leaving directory `C:/Users/Эл/workspace/qt2'
mingw32-make: *** [debug] Error 2
а закаментываю строку #include "curl/curl.h" и все отлично... че за хрень такая...

Дикс
04.01.2010, 11:06
пишут что это баг Qt

http://niftools.sourceforge.net/forum/viewtopic.php?f=4&p=15485

eldar85
04.01.2010, 14:19
да уж, присоединять все сложно еще и Кт походу тупое... никак не пойму...

razb
04.01.2010, 14:32
2 eldar85 Обнови фреймворк до 4.6 возможно проблема исчезнет.

eldar85
04.01.2010, 14:33
спасибо за совет, попробую))

eldar85
04.01.2010, 16:48
не получается ничего...

eldar85
04.01.2010, 16:49
уже думаю может в Qt creator как то запихать libcurl. Кто нибудь пробывал?

razb
04.01.2010, 18:29
Зачем тебе курл? не проще использовать средства qt ?

eldar85
04.01.2010, 21:06
да я привык к нему, к тому же у него очень хорошие показатели... хочется именно с курлом. Да и примеры все хакерские имеено в курле приведены... мне пока будет легче именно с ним, постепенно освою Qhttp, но сразу все - осваивать, не могу себе позволить, времени не хватает...

eldar85
04.01.2010, 22:03
слушай а средства Qt: QNetworkAccessManager и QHttp содержат все необходимое также как и курл?

razb
04.01.2010, 23:39
_http://doc.trolltech.com/4.6/qnetworkaccessmanager.html

eldar85
05.01.2010, 00:31
да уж нужно будет покапаться... просто не хотелось бы делать шаг назад если он не сможет работать так же как курл.

Akum
06.01.2010, 02:26
Я помню побывал библиотеки qt asppak жать и он хорошо с этим справился не помню на с кока сжал но сжал хорошо я еще удивился!

eldar85
06.01.2010, 04:10
и все же присоединил я курл к Qt)))

eldar85
09.01.2010, 20:53
только вот похоже придется менять все в коде моих прог по курлу...