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

SDL2 plik exe error

Object Storage Arubacloud
0 głosów
408 wizyt
pytanie zadane 8 listopada 2018 w C i C++ przez Jakub Chomicz 1 Użytkownik (840 p.)
Witam ostatnio mam problem ponieważ jak kompiluje i otwieram program oparty na bibliotece SDL2 z CodeBlocks-a to wszystko działa zaś jak odpalam ten sam program z folderu bin to włącza mi się białe okno zamiast normalnego programu i program odrazu przestaje działać. Co mam zrobić ? Jak to naprawić ?

1 odpowiedź

0 głosów
odpowiedź 8 listopada 2018 przez j23 Mędrzec (194,920 p.)
Przy odpalaniu z poziomu IDE aplikacja ma ustawiony inny katalog roboczy (chyba katalog projektu), więc jak masz jakieś DLL-ki, bitmapy itp, to zadbaj o to, żeby były w katalogu z exekiem.
komentarz 8 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
gdzie mogę znałeźć ten katalog ?
komentarz 8 listopada 2018 przez j23 Mędrzec (194,920 p.)
W katalogu z projektem?
komentarz 8 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
nie mam folderu exek w projekcie

:/
komentarz 8 listopada 2018 przez j23 Mędrzec (194,920 p.)
Ech, nie "folder exek", tylko folder z exekiem, czyli tam, gdzie leży plik wykonywalny.
komentarz 8 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
aha to ja mam tam dll-e
komentarz 9 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
i nie dziala dalej
komentarz 9 listopada 2018 przez j23 Mędrzec (194,920 p.)
Problem w takim razie leży w innym miejscu. Być może w kodzie. Wersja Release też się tak zachowuje?
komentarz 9 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
Release W sęsie przy odpalaniu z codeblocks-a ? nie wtedy mi wszystko działa
komentarz 9 listopada 2018 przez j23 Mędrzec (194,920 p.)

Nie, Release w "sęsie" nie-Debug. Przełącz Build Target na Release i skompiluj projekt. Aplikacja będzie w innym katalogu (release), więc jak są jakieś rzeczy do przerzucenia, to będziesz musiał je skopiować do tego katalogu.

 

komentarz 9 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
wtedy mi wyskakuje że brakuje plików dll
komentarz 9 listopada 2018 przez j23 Mędrzec (194,920 p.)
edycja 9 listopada 2018 przez j23

No ale skopiowałeś DLL-ki (i inne niezbędne do działania aplikacji pliki) do katalogu z plikiem wykonywalnym (mowa o tym w wersji release)?

 

Chyba że błędy masz podczas kompilacji, wtedy musisz w opcjach projektu dodać wszystkie niezbędne biblioteki dla profilu Release.


Jeszcze jedna rzecz mi przyszła do głowy. Dodaj, jeśli nie jej ma, ścieżkę <MinGW>\bin do zmiennej środowiskowej PATH. (AFAIK instalator C::B nie dodaje jej)

komentarz 9 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
dobra już skopiowałem i release i debug działają tak samo
komentarz 9 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
gdzie dać tą ścieżke w opcjach ?
komentarz 9 listopada 2018 przez j23 Mędrzec (194,920 p.)
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
nie działa :/
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)

Rozwinąłeś <MinGW> do właściwej ścieżki?

komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
do bin ? tak
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)

Kończą mi się pomysły. Z reguły te dwie kwestie (PATH i katalog roboczy) powodują problemy przy uruchamianiu spoza środowiska.

komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
:/ Dobra dzięki za dobre chęci
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)

Możesz jeszcze odpalić konsole w katalogu z exekiem i wywołać komendę ldd nazwa-programu.exe. Na wyjściu powinieneś mieć listę dll-ek, które są potrzebne do uruchomienia. Pokaż, co zwraca to wywołanie.

komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
co wpisać ? ldd Alone.exe?

tak o ?
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
wyskakuje mi : 'ldd' is not recognizzed as an internal or external command,operable program or batch file
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
przy wpisaniu dll a nie ldd bo chyba o to chodziło  wyskakuje mi to samo
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
jak możesz to pokaż jakiś poradnik z tą komendą
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)

Niewykluczone, że ldd nie wchodzi w skład MinGW (na Windowsie mam MSYS2 i tam jest).

 

Sprawdź, co wypisze wywołanie g++ -v

 

komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)

jak ? co mam zrobic?

komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)

Uff, ciężko idzie... Gdzie napisałem, żebyś wywołał g++ Alone.exe?

 

Mniejsza z tym, wygląda na to, że nie masz ldd. Możesz użyć Dependency Walkera, żeby sprawdzić, czy wymagane DLL-ki znajdują się w katalogu aplikacji, <MinGW>\bin i/lub systemowym (standardowe crt).

komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
i jak teraz uzyc tego programu?
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)
Błagam. Bawisz się w programowanie, a nie możesz prostego programu ogarnąć?

Otwórz w nim twojego exeka.
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)

 :/

dobrze ? co teraz ?

komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)
Ok. Te trzy biblioteki SDL-a leżą w katalogu aplikacji, tak?

 

Rozwiń ich poddrzewa.
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)

tak są tam

komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)
Twój program wczytuje jakieś bitmapy?
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
z rozszerzeniem bmp ? nie tylko png używam
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)
Leżą tam, gdzie powinny leżeć? Sprawdzasz w kodzie, czy się wczytały?
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
tak. mam w kodzie ścieżke zapisaną ich a leżą w przy folderze bin
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)

leżą w przy folderze bin

To w końcu `w` czy `przy`? To ma znaczenie, bo jak dajesz tylko nazwę pliku w parametrze funkcji otwierającej bitmapę, to aplikacja nie będzie szukać pliku poza katalogiem roboczym.

komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
przy folderze bin czyli w głównym folderze z grą ale w samym code block-sie mam podaną ścieżke w kodzie do tego katalogu
komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)
Pokaż fragment kodu ładujący bitmapę.
komentarz 10 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)

za dużo tu chyba nie zobaczysz wiec po prostu napisze :

            SDL_Surface * BG1 = IMG_Load("Images/BG1.png");
            SDL_Surface * Character = IMG_Load("Images/Character.png");
            inv.InvImage = IMG_Load("Images/InvPkt.png");

 

komentarz 10 listopada 2018 przez j23 Mędrzec (194,920 p.)

Jeśli katalog Images nie leży w katalogu bin (tam gdzie aplikacja), to wracamy do tego, co napisałem na samym początku. Skopiuj go tam.

komentarz 11 listopada 2018 przez Jakub Chomicz 1 Użytkownik (840 p.)
dobra juz działa wielkie dzięki
komentarz 11 listopada 2018 przez j23 Mędrzec (194,920 p.)
Nauka z tego taka, że zawsze trzeba sprawdzać, czy pliki lub dane poprawnie się otworzyły/wczytały. Gdybyś miał poprawnie zrobioną obsługę błędów, od razu wiedziałbyś, gdzie leży problem.

Podobne pytania

+1 głos
2 odpowiedzi 511 wizyt
pytanie zadane 25 września 2021 w C i C++ przez DeniS1 Początkujący (410 p.)
–1 głos
2 odpowiedzi 498 wizyt
pytanie zadane 11 czerwca 2017 w C i C++ przez Tomek Kozioł Obywatel (1,740 p.)
0 głosów
2 odpowiedzi 571 wizyt
pytanie zadane 28 sierpnia 2016 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

92,539 zapytań

141,382 odpowiedzi

319,476 komentarzy

61,928 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

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!

...