• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jak skompilować program w Qt

Object Storage Arubacloud
+3 głosów
2,748 wizyt
pytanie zadane 5 maja 2015 w C i C++ przez niezalogowany

No więc ja (i nie tylko ja) mam problem z odpalaniem programu skopmilowanego w bibliotece Qt. Jeśli się to zrobi z perspektywy programu (czyli Ctrl+R albo ikonka zielonego trójkącika) to wtedy jest git, jak się dobrze pokoduje to działa ;) Ale jeśli chce się np. wysłać program koledze to już wtedy nie działa :/ Próbowałem tak:

  • skompilować program w trybie Debug > sprawdzić z poziomu pulpitu > wejść do folderu projektu > folder ...debug > nie działa, mam błąd ,,Uruchomienie tej aplikacji nie powiodło się, ponieważ nie znaleziono Qt5Cored.dll. Ponowne zainstalowanie aplikacji może naprawić ten problem". Proszę nie odpowiadać żebym spróbował reinstall, bo zrobilęm to już dwa razy :/
  • to samo tylko w trybie Release > ... > nie działa, mam błąd ten sam, tylko zamiast Qt5Cored.dll jest icuin52.dll
  • z kolegą pisałem prywatną pocztę i napisał mi, żebym spróbował skopiować folder z projektem np. na pulpit > wejść do głównego folderu Qt > Qt 5.4 > bin > skopiować te biblioteki, których brakuje (po skopiowaniu jednej i włączeniu znowu pojawia się błąd, tylko że tym razem pokazuje inną bibliotekę), ale wszystkich bibliotek w tym folderze nie ma, więc to też odpada.

Jeśli ktoś wie to bardzo proszę o odpowiedź. Jeśli jest poprawna, to pomoże nie tylko mi ;)

4 odpowiedzi

+1 głos
odpowiedź 6 maja 2015 przez Bondrusiek Maniak (61,410 p.)
wybrane 6 maja 2015
 
Najlepsza

Słowo na temat pliku wykonwalnego. W Linuksie plik wykonywalny łączy z biblioteką Qt w naszym sprzęcie i gdy go uruchamiam (klikając na plik) nie powinno być problemów. W Windows wyskoczy komunikat o braku jakiejś biblioteki. Kopiujemy ją (o rozszerzeniu .dll) z katalogu, gdzie umieszczone jest Qt i wklejamy do katalogu z plikiem wykonywalnym. Zazwyczaj tych bibliotek .dll trzeba dołączyć kilka.

Teraz pokaże to bardziej "łopatologicznie":

Stwórz nowy projekt np. QWidget nazwij go Na_Forum. Dodaj sobie coś do widżetu lub zostaw go pustego ale pamietaj o zkompilowaniu projektu. Zamknij QtCreator i odszukaj folder(tam gdzie posiadasz zapisane projekty z Qt):

build-Na_Forum-Desktop_Qt_5_3_MinGW_32bit-Debug->debug

W tym folderze powinny być następujące pliki.

  • main.o
  • moc_widget
  • moc_widget.o
  • Na_Forum
  • widget.o

Kliknięcie na plik wykonywalny Na_Forum spowoduje pojawienie się błędu informującego o braku biblioteki .dll.

Musisz wejść do folder tam gdzie masz zainstalowane Qt i skopiować bibioteki(u mnie jest tak).

D:/Qt/5.3/mingw482_32/bin

Aby wiedzieć jakie biblioteki potrzebujesz klikasz na plik wykonywalny(Na_Forum) i widzisz jaką bibliotekę brakuję. Brakuje Qt5Cored.dll to ją kopiuesz do build-Na_Forum-Desktop_Qt_5_3_MinGW_32bit-Debug->debug i znów klikasz na Na_Forum, patrzysz jakich bibliotek brakuje i dalej kopiujesz.

Takie biblioteki są potrzebne bym mógł odpalić ręcznie program:

Następnie klikasz na plik wykonywalny(Na_Forum) i :

powinno działać. Mam nadzieje, że pomogłem.

 

komentarz 6 maja 2015 przez niezalogowany
Może i pomogłeś ;) ale po skopiowaniu 3 bibiliotek pokazuje mi się takie o ,,Nie znaleziono punktu wejścia procedury __cxa_throw_bad_array_new_length w bibliotece libstdc++-6.dll."  Czyli, że tym razem nie braukje mi biblioteki, tylko... Czegoś. Wiedziałbyś o co chodzi? Dzięki waszym wszystkim odpowiedziom już wiem, że właśnie tak to się robi, że trzeba skopiować biblioteki, ale mam kolejny teraz problem :/
komentarz 6 maja 2015 przez Bondrusiek Maniak (61,410 p.)

Witam,

std::bad_array_new_length występuje wtedy gdy jest bład prz alokacji pamięci.

http://www.cplusplus.com/reference/new/bad_array_new_length/

Spróbowałeś tak jak Ci powiedziałem czyli stworzyłeś nowy projekt i pokopiowałeś tam biblioteki. Czy może spróbowałeś swój własny projekt tak otworzyć(to może bład leży po stronie programu). Jakby co moge ci wysłać tą bibliotekę lub możesz ją pobrać ze strony :

http://www.dll-files.com/

komentarz 6 maja 2015 przez niezalogowany
Dobra, dzięki, musiałem poprostu skopiować bibliotekę libstdc++-6.dll, a potem jeszcze inne i działa :3 Dzięki jeszcze raz, masz naj ;)
0 głosów
odpowiedź 5 maja 2015 przez Linker Bywalec (2,690 p.)
Musisz mieć wszystkie biblioteki, które program używa w folderze z programem. Jeśli dalej wywala błąd to sprawdź czy to jest na pewno dobra wersja biblioteki.
komentarz 6 maja 2015 przez niezalogowany
No właśnie napisałem, że niestety nie mam wszystkich :/ Nie wiem, poszukam dalej albo posurfuję trochu po necie, może znajdę :|
0 głosów
odpowiedź 5 maja 2015 przez Kabotyn Mądrala (5,650 p.)

Nie wiem do końca jak to jest na windowsie ale na osx'ie razem z Qt jest dostarczana aplikacja macdeployqt (konsolowa) którą się odpala podając odpowiednie ścieżki i potem mam gotową applikację. Na windowsie sądzę, ze podobnie. 

Może coś tutaj znajdziesz:

https://wiki.qt.io/Deploy_an_Application_on_Windows ?

Jak nie to proponuję poszukać w google pod hasłem "deployment qt" "deploy app qt" lub coś w tym stylu.

komentarz 5 maja 2015 przez Kabotyn Mądrala (5,650 p.)
O, SO zawsze przyjdzie z pomocą :)

http://stackoverflow.com/questions/22185974/deploying-qt-5-app-on-windows

Tzn wygląda jak byłoby pomocne :)
komentarz 6 maja 2015 przez niezalogowany
No jak widać wszystko jest w wikipedi, dzięki, nie widziałem, a trochę już przeglądnąłem ;)
komentarz 6 maja 2015 przez niezalogowany
Aha! Czyli tak to się robi, że trzeba wszystkie biblioteki skopiować :O Dzięki za info ;)
0 głosów
odpowiedź 1 października 2016 przez ZielonyProgramista Nowicjusz (140 p.)
Jeśli górnictwo to przepraszam.

Postąpiłem za radą.

Program startowy działa pięknie, ładnie się uruchamia.

Przeraziła mnie jedna rzecz.

Do najprostszej aplikacji, żeby działała muszę skopiować biblioteki o łącznej pojemności około 500MB.

Czy jest możliwość ustawienia, żeby skompilowane aplikacje szukały wbudowanych bibliotek dll Qt w konkretnym katalogu?
komentarz 1 października 2016 przez criss Mędrzec (172,590 p.)

Czy jest możliwość ustawienia, żeby skompilowane aplikacje szukały wbudowanych bibliotek dll Qt w konkretnym katalogu?

Ale co to ma zmienić? I tak na dysku muszą być te dll. Anyway - domyślnie, poza katalogiem z exe, szukane są w C:/Windows/System32 i (z tego co czytam) w katalogach  wyszczególnionych w zmiennej środowiskowej Path.  

Podobne pytania

+1 głos
1 odpowiedź 385 wizyt
+1 głos
0 odpowiedzi 137 wizyt
+2 głosów
0 odpowiedzi 359 wizyt

92,698 zapytań

141,614 odpowiedzi

320,144 komentarzy

62,058 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...