Skocz do zawartości

Instalacja, konfiguracja SFML w Dev-C++


Sutikku

Rekomendowane odpowiedzi

Miałem nadzieje, że to będzie tak proste jak z Allegro - search devpaks -> Allegro -> OK. Korzystam z Orwell Dev-C++ Wersji 5.7.1

Jak na razie scaliłem pliki z SFML (include, bin itd.) z tymi w Devie, ale mam masę błędów przy kompilacji 'undefined reference to...'. Jest jakiś prosty sposób linkowania, czy dołączania plików?

Odnośnik do komentarza
Udostępnij na innych stronach

Powiem, że przestawiłem się znowu na code::blocks, (bo na początku korzystałem z code::blocks). Z tym, że już napotkałem problem. Muszę w 'Linker Settings' ustawić sfml-graphics itd. Mają one format .a. Jedyne takie pliki u mnie to libsfml-graphics.a Czy to, że mają przedrostek lib coś zmienia?

Odnośnik do komentarza
Udostępnij na innych stronach

Niby wszystko mam już zlinkowane. Jednak albo to ze mną jest coś nie tak albo Code::Blocks (stawiam na opcje 1).

Pojawił się błąd, że nie odnajduje sfml-window-2.dll. Sam znalazłem te pliki, wkleiłem przy exe'ku. Niby wilk syty i owca cała, tak? Oczywiście, że nie :)

Nie znaleziono punktu wejścia procedury __gxx_personality_v0 w bibliotece libstc++-6.dll.

Możecie tłumaczyć łopatologicznie, bo chyba do mnie już inaczej nie dociera.

Odnośnik do komentarza
Udostępnij na innych stronach

To normalne, że się coś takiego wyświetla jak nie skopiowałeś do katalogu z exekiem "libstc++-6.dll". ;)

Skopiuj to i będzie cacy.

 

PS. wydaje mi się, że jeszcze jakaś libka potrzebna, zobacz co wyświetli później i też wklej - wszystko w folderze Code Blocksa \MinGW\bin\. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Doinstalowałem te dll bo w paczuszce z sfml, ich nie było (100% pewność). Powinny tam się znajdować? Z tym, że nie wiem czy mi już działa, bo magicznie cofnęło mi projekt gdzie praktycznie nic nie ma.

/*/*/*/*/ EDIT

W debug -> linker settings, mam ustawione -sfml-graphics-d itd. W releasie -sfml-graphics. Oto błąd kompilacji

ld.exe||cannot find -l-sfml-graphics-d|

ld.exe||cannot find -l-sfml-window-d|

ld.exe||cannot find -l-sfml-system-d|

Już ogarnąłem, mój błąd. Teraz kiedy wszystko już się kompiluje, nic się nie wyświetla (czasem jest w procesach, czasem nie). Kod int main() jest z tej strony http://sfml-dev.org/tutorials/2.1/start-cb.php.

Odnośnik do komentarza
Udostępnij na innych stronach

-------------- Build: Debug in Test SFMLu (compiler: GNU GCC Compiler)---------------

 

mingw32-g++.exe -Wall -DSFML_STATIC -g -IC:\Users\1\Desktop\SFML-2.1\include -c "C:\Users\1\Desktop\SFML-2.1\Test SFMLu\main.cpp" -o obj\Debug\main.o

mingw32-g++.exe -LC:\Users\1\Desktop\SFML-2.1\lib -o "bin\Debug\Test SFMLu.exe" obj\Debug\main.o C:\Users\1\Desktop\SFML-2.1\lib\libsfml-graphics-d.a C:\Users\1\Desktop\SFML-2.1\lib\libsfml-window-d.a C:\Users\1\Desktop\SFML-2.1\lib\libsfml-system-d.a -mwindows

Output file is bin\Debug\Test SFMLu.exe with size 742.52 KB

Process terminated with status 0 (0 minute(s), 1 second(s))

0 error(s), 0 warning(s) (0 minute(s), 1 second(s))

 

 

-------------- Run: Debug in Test SFMLu (compiler: GNU GCC Compiler)---------------

 

Checking for existence: C:\Users\1\Desktop\SFML-2.1\Test SFMLu\bin\Debug\Test SFMLu.exe

Executing: "C:\Users\1\Desktop\SFML-2.1\Test SFMLu\bin\Debug\Test SFMLu.exe" (in C:\Users\1\Desktop\SFML-2.1\Test SFMLu\.)

Process terminated with status -1073741819 (0 minute(s), 7 second(s))

 

Zawsze zwraca ten sam status chyba, że zamknę przez menedżer zadań, to wtedy standardowo zwraca 1.

Odnośnik do komentarza
Udostępnij na innych stronach

Tylko i wyłącznie używam F9. A samo włączenie exeka, prowadzi do tego samego tak notabene. Dodam, że konsola się nie wyświetla bo miałem ustawione w ustawieniach zamiast console application - GUI application. Jeśli zmienię to jest pusta konsolka, która się potem wyłącza.

Odnośnik do komentarza
Udostępnij na innych stronach

Em, nie zaznaczyłeś żadnego breakpointa z lewej strony? btw. nie znoszę nowszych wersji Deva od 4.9.9.2, przyrosłem do niego (w szkole), bo w domu jednak wole MSVC++ 2008 express.

Sprawdź w zakładce Uruchom -> Kompiluj i uruchom. Być może nowsze wersje Deva zwyczajnie mają inne hoty

Odnośnik do komentarza
Udostępnij na innych stronach

Nie wątpię, że działa ;) Jednak tak teraz zauważyłem, że po wklejeniu libstdc++-6.dll, z folderu w CodeBlocks MinGW, program się nie kompiluje 'nie znaleziono wejścia procedury...' to co wcześniej, a jak wklejam ten ściągnięty z jakiejś losowej strony, to kompiluje. Dodatkowo ten ściągnięty waży dużo, dużo mniej. Może to być wina .dll?

Odnośnik do komentarza
Udostępnij na innych stronach

Em, w życiu czegoś takiego nie doświadczyłem.

To co wklejasz to build wersji debug, nie wiem jak działa debug w C::B ale spróbuj skompilować normalnie.

No i druga rzecz to moim zdaniem jak przestawiłeś się z console na GUI Application to nie powinieneś mieć int main(), tylko int WinMain() - winapi, prawdopodobnie będziesz musiał dorzucić jeszcze windowsowe liby, ale szczerze nie wiem, nie ufam ani Devowi > 4.9.9.2 ani C::B.

Odnośnik do komentarza
Udostępnij na innych stronach

Hmmm, to być może pozostaje mi się przenieść na inne środowisko (tak to się nazywa, prawda?). Visual C++ 2008, będzie dobry i w końcu będę mógł coś zrobić z SFML?
Środowisko, IDE, jedno i to samo. No ja akurat tego używam i moim zdaniem jest dobry, ale nie żebym później wyszedł na trolla przekonującego do swojego - z C::B też by działało tylko pewnie coś gdzieś nie trybi :D
Odnośnik do komentarza
Udostępnij na innych stronach

Powinny tam się znajdować? Z tym, że nie wiem czy mi już działa, bo magicznie cofnęło mi projekt gdzie praktycznie nic nie ma.

Nie powinny, bo to normalne libki MinGW.

 

No i druga rzecz to moim zdaniem jak przestawiłeś się z console na GUI Application to nie powinieneś mieć int main(), tylko int WinMain() - winapi, prawdopodobnie będziesz musiał dorzucić jeszcze windowsowe liby, ale szczerze nie wiem, nie ufam ani Devowi > 4.9.9.2 ani C::B.

Ale po jakiego grzyba to? Zostaw tak jak jest, int main() lepiej.

 

Hmmm, to być może pozostaje mi się przenieść na inne środowisko (tak to się nazywa, prawda?). Visual C++ 2008, będzie dobry i w końcu będę mógł coś zrobić z SFML?

Najgłupsze co możesz zrobić... bo Ci nie idzie to musisz zmieniać IDE? Problem z libkami? Lepiej zainstalować VC++ by ich było więcej. :thumbsup:

 

Poza tym, cały czas debugujesz, bo co z tego, że F9 jak nie zmieniłeś w opcjach projektu Target -> Debug na Target -> Release.

 

Sprawdź jeszcze raz wszystko. Usuń półprodukty kompilacji, zaaktualizuj libki MinGW (jak to miało jakoś tam pomóc), zmień target na release i skompiluj. Zadziała na 100%. :)

Odnośnik do komentarza
Udostępnij na innych stronach

Process terminated with status 0 (0 minute(s), 1 second(s))

0 error(s), 0 warning(s) (0 minute(s), 1 second(s))

Nie wyświetla się, bo od razu zostaje zamknięta.

Jakie biblioteki pobrałeś SJLJ, czy DW2 ? Jeśli DW2, to mają być SJLJ.

Jak nie chcesz się z całością babrać, to stwórz nowy projekt>SFML>SFML 2.0>Static>Podajesz ścieżke do folderu głównego z sfml'em i kodzisz.

Ew. jak tak bardzo chcesz się nauczyć dodawać lib'y do projektów, to zaraz po stworzeniu takiego projektu przepatrz Build options...

Albo masz złe pliki, albo coś przeoczyłeś.

Odnośnik do komentarza
Udostępnij na innych stronach

biblioteki .lib sa kompilowane przez kompilator visuala. biblioteki .a sa budowane przez gcc.

Odnośnik do komentarza
Udostępnij na innych stronach

Hmmm, trochę poszedłem (a raczej chciałem) pójść najmniejszą linią oporu. Więc New->Project->SFML. Wskazałem pliki SFML 2.0 tak jak ładnie poprosił mnie CB, wchodzę w main.cpp, gdzie już był wklejony test działania, kompiluje i bum! 50 (słownie-pięćdziesiąt) errorów-'undefined reference to

C:\Users\1\Desktop\SFML-2.0\lib\libsfml-window-s-d.a(VideoMode.cpp.obj):VideoMode.cpp:(.eh_frame$_ZNSt6vectorIN2sf9VideoModeESaIS1_EED1Ev+0x13)||undefined reference to `__gxx_personality_v0'|

Oraz

D:\developpement\sfml\sfml\src\SFML\Window\VideoMode.cpp|67|undefined reference to `_Unwind_Resume'|

Podzielili się errorami po połowie, jeden 25 i drugi 25, tak na oko :)

Odnośnik do komentarza
Udostępnij na innych stronach

Please, use SFML 2.1 :)

Odnośnik do komentarza
Udostępnij na innych stronach

ok, pacz jak to sie robi:

1. sciagasz paczke sfml 2.1;

2. wypakowujesz ja gdzies na dysku (ja stosuje do tego osobny folder na rozne SDK);

3. tworzysz nowy project konsolowy w C::B;

4. menu -> project -> build options:

a ) z lewego panelu wybierasz roota (czyli ustawienia projektu);

b ) zakladka "search directiories";

c ) ponizej zakladka "compiler" i dodajesz tam sciezke do "<sfml2.1>/include";

d ) dalej zakladka "linker" i dodajesz sciezke do "<sfml2.1>/lib";

e ) zakladka "compiler settings", potem nizej "#defines" i dodajesz: "SFML_STATIC";

f ) z lewego panelu wybierasz "debug";

g ) zaladka "linker setings";

h ) dodajesz nastepujace biblioteki (pamietaj, ze kolejnosc ich dodawania jest wazna!): libsfml-audio-s-d.a, libsfml-graphics-s-d.a, libsfml-window-s-d.a, libsfml-system-s-d.a

i ) z lewego panelu wybierasz "release";

j ) zaladka "linker setings";

k ) dodajesz nastepujace biblioteki (pamietaj, ze kolejnosc ich dodawania jest wazna!): libsfml-audio-s.a, libsfml-graphics-s.a, libsfml-window-s.a, libsfml-system-s.a

 

Pro-tip: CZYTANIE DOKUMENTACJI NIEDOPUSZCZA DO POWSTANIA TAKICH PROBLEMÓW.

CHeers! :)

Odnośnik do komentarza
Udostępnij na innych stronach

Zrobiłem wszystko kropka w kropkę. Znowu masa błędów (50 errorów), przy zmianie target na release mam znaczną przewagę błedów Unwind_resume, a przy targecie debug, więcej gxx_personality. Jeśli kogoś już zaczynam denerwować, to przepraszam ;)

Odnośnik do komentarza
Udostępnij na innych stronach

podeslij mi paczke z projektem, ktory stworzyles + logi kompilacji debug i release. cale logi i wszystkie pliki projektu bez folderow bin i obj.

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...