Skocz do zawartości

[C++][Visual 2008 Pro] Wczytywanie plików graficznych nieprzenośne


vipeout

Polecane posty

Napisałem aplikację która na moim komputerze działa tak jak powinna. Natomiast po przeniesieniu na komputer

kumpla niestety nie wczytuje się obraz. Nie brakuje żadnych bibliotek, ani nic bo nawet w celu znalezienia źródła problemu - zainstalowałem u niego wszystko co potrzebne, dokładnie to samo co i u mnie.

 

I dalej nic. Sprawa ma się tak: Aplikacja rusza, wczytuje sobie pliki graficzne i je wyświetla. Format png, używam SDL'a jeśli to coś pomoże, próbowałem też jpg. Otóż jakimś cudem u mnie pliki wczytują się, a u niego tak jakby nie mógł się do nich dostać / nie widział ich - przy debugowaniu widać, że ścieżka i powierzchnie są poprawne, jednak funkcja IMG_Load() z SDL_image zwraca NULL - czyli że coś poszło nie tak.

 

Próbuję rozgryźć co jest nie tak, ale mija 3 dzień a ja dalej nie mam pojęcia czemu tak jest. Próbowałem przenieść plik tuż obok exeka i zmienić ścieżkę w programie na sztywna - typu "Plik.png", co powinno wczytać plik w tym samym folderze co plik *.exe. Niestety nic nie skutkuje. Plik nie jest uszkodzony, bo dowolny program czytający obraz nie ma z nim problemów, to jest dokładnie ten sam kod i pliki co u mnie.

 

Ja używam Win7 Professional 64bit, kumpel wersji Ultimate, również 64bitowej. Program mu się odpala, konsola działa (wypisuje współrzędne kursora), wszystkie funkcje działają, jedyne czego nie ma to obraz. Upewniliśmy się, że to nie sterowniki (ma najnowsze) i więcej pomysłów nie mam. Prosiłbym o pomoc bo to mój pierwszy projekt, w którym używam zewnętrznej biblioteki (SDL) i o ile u mnie działa, to u kumpla te pliki po prostu się nie wczytują.

 

Albo system mu zabrania się do nich dostać (choć odpalanie jako administrator nic nie daje, a u mnie nie jest wymagane), albo dzieje się coś o czym nie mam jeszcze pojęcia.

 

Zdaję sobie sprawę, że trochę ten post przydługawy, ale zależy mi na rozwiązaniu problemu. Co mi po aplikacji, która jest nieprzenośna? Z góry dziękuję.

Link do komentarza
Udostępnij na innych stronach

Będę Cię musiał zmartwić, bo jest on dość spory - całego nie mam jak tutaj umieścić. Wrzucę tę część która odpowiada za wczytywanie obrazu - mam nadzieję, że tyle wystarczy, w sumie powinno.

 

...
       Entity* BG_01 = new (Entity);

       string temp="";
       temp.append("./Graphics/");
       temp.append(drive);
       temp.append("/BG_01.png");

       if( BG_01->Load(temp.c_str(),640,480,0) == 0 )
       {
               cout << "Error BG_01.png" << endl;
               return false;
       }

       BG_01->Show();
       Qube::EntityList.push_back(BG_01); 
...
$IIZą-k!ŁŁzŁiĄnśł%jĘh'Łw8w8'ejz;3z:\"Śz7G#hwĄvVz
Ś        
bool Entity::Load(const char* File, int Width, int Height, int MaxFrames) 
{
       if( (Surf_Entity = Surface::OnLoad(File)) == 0) 
               return false;

       this->Width = Width;
       this->Height = Height;

       Anim_Control.MaxFrames = MaxFrames;

       return true;
}

 

Funkcje wywoływane w tym fragmencie pochodzą z biblioteki SDL i można je uznać za w 100% poprawne (SDL jest jednak dość znaną biblioteką). Jeżeli jakiś fragment będzie wymagał komentarza / wyjaśnienia, albo jeszcze jakąś część kodu trzeba będzie wrzucić - nie ma sprawy, zależy mi na rozwiązaniu problemu. Mam nadzieję, że to pomoże.

Link do komentarza
Udostępnij na innych stronach

Ponieważ tworzę stringa (wykorzystanie różnych skórek). Dodaję do końca zmienną drive która zawiera tylko nazwę skórki.

 

Np.

 

drive = "Skin_01"
$r'j0Śkk y)y^,2ĘipFVgVCw&726śó$uóćrgVC%6Ś\"o+^()0Ź$Hhu3Z&Ś(ąk< y6ębąŚŚśŚł
+jvłj&ĄG#izwbŚknę-ę-$Ąęh(5Źśrhr'ŚŚXśęGązFŚź,+Ś~]zź'ĘipĆErgVC$uóćrgVC

 

W sumie powinienem był wyjaśnić tę zmienną wcześniej :/

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...