Uruchamianie aplikacji Qt4 pod Windows

0

Zwykłe uruchomienie aplikacji windowsowej skompilowanej z użyciem środowiska graficznego Qt4 zwraca błąd związany z brakiem biblioteki qt4core.dll
Środowisko Qt4 jest dość duże, domyślam się, że najpierw pewnie trzeba je zainstalować na maszynie klienckiej.
A co jeśli chciałbym by program działał natychmiast, bez instalacji dodatkowych bibliotek? Czy zwykłe skopiowanie qt4core.dll do folderu z programem rozwiązuje problem? A może jest jakaś specjalna flaga kompilacji by używana część kodu qt4 została wbudowana w exeka statycznie?

0
tomtao napisał(a)

...A co jeśli chciałbym by program działał natychmiast, bez instalacji dodatkowych bibliotek? Czy zwykłe skopiowanie qt4core.dll do folderu z programem rozwiązuje problem?...

Jeśli wrzucenie gt4core.dll do katalogu systemowego rozwiązuje problem, to dodanie jej do katalogu z aplikacją też rozwiąże problem, LoadLibrary() szuka w obu tych miejsach

0

chyba nie wyczaiłeś o co chodzi w pytaniu "creayze". W pytaniu chodzi o to jak ustawić kompilator albo nie wiem - może linker tak, co by po skompilowaniu kodu program uruchamiał się sam z siebie. bez "dll"-i QT. innymi słowy- kompilator powinien wkompilować w program wszystko co jest mu potrzebne do uruchomienia się.

To dobre pytanie- zwłaszcza że Sam szukam odpowiedzi. :) [browar]

0

Żadne porządne oprogramowanie nie robi takich rzeczy. Jedyna wątpliwa zaleta to jeden wielki plik exe.
Zaletą posiadania dll jest to, że możesz je uaktualnić bez modyfikowania głównego programu. Qt dba o "binary compabilyty", więc większość aplikacji napisanych i skopilowanych w starszych wersjach Qt powinna działać z nowymi bibliotekami Qt bez rebuilda aplikacji.

0

ale -
QtCored4.dll to 17.5 MB
QtGui4.dll - 11.9MB
QtGuid4.dll - 71.6MB .
Czy tak ma być? :-/

0
udek napisał(a)

ale -
QtCored4.dll to 17.5 MB
QtGui4.dll - 11.9MB
QtGuid4.dll - 71.6MB .
Czy tak ma być? :-/

Nie.
Te dwie wystarczą:
QtGui4.dll
QtCore4.dll

0

Nigdy nie należy umieszczać libów Qt w folderach systemowych. Problem to chociażby różne kompilatory, część softu używającego Qt jest kompilowana CL z VC, inne G++ - kompatybilność pomiędzy nimi zerowa. Tam samo zresztą nie ma gwarancji, że biblioteka skompilowana starą wersją kompilatora będzie poprawnie współpracować z programem skompilowanym nową. Jedyne rozwiązanie to dll-ki Qt w folderze programu, przy poważniejszej zmianie wersji kompilatora wypadałoby SDK dla pewności przekompilować. Kompilacja Qt do bibliotek statycznych zaś ogranicza jego możliwości... Ale cóż, to wszystko można przecież wyczytać z dokumentacji Qt...

0
mi14chal napisał(a)
udek napisał(a)

ale -
QtCored4.dll to 17.5 MB
QtGui4.dll - 11.9MB
QtGuid4.dll - 71.6MB .
Czy tak ma być? :-/

Nie.
Te dwie wystarczą:
QtGui4.dll
QtCore4.dll

jesteś bardzo oszczędny w słowa. masz na myśli zależność między debug a relase - jo?
"mowa jest srebrem, milczenie złotem" [browar]
czy jakoś tak.

0

Klientowi będziesz dostarczał program w trybie Release, więc dołączasz do programu te dwie dll co ci podałem.

0

Z mojej strony to wszystko. THNX

0

Odnowie temat, bo mój problem dotyczy tego samego co ten temat.

Przed przegraniem pliku QtCored4.dll uruchomienie programu (nie z qtcreatora) zwraca błąd:
"The procedure entry point _Z11qt_assert_xPKcS0_S0_i could not be located in dynamic link libraryQtCored4.dll"

Po przegraniu pliku QtCored4.dll do folderu programu komunikat błędu zmienił się na:
"The procedure entry point ?disconnectNotify@QObject@@MAEXPBD@Z could not be located in the dynamic link library QtCored4.dll"

O co tu chodzi ?

0

Topic ma już 2 lata ale co tam.

W przypadku następującego problemu:
Po przegraniu pliku QtCored4.dll do folderu programu komunikat błędu zmienił się na:
"The procedure entry point ?disconnectNotify@QObject@@MAEXPBD@Z could not be located in the dynamic link library QtCored4.dll"

Wystarczy poszukać innych plików QtCored4.dll i wrzucić je do katalogu z programem - te z katalogów simulator mogą nie działać (tzn. u mnie tak to wygląda).

A tak swoją drogą to witam forum! To mój pierwszy post tutaj

1 użytkowników online, w tym zalogowanych: 0, gości: 1