Skocz do zawartości
Sutikku

Instalacja, konfiguracja SFML w Dev-C++

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?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jesteś pewien, że wszystko robisz dobrze?

Jeśli używasz dllek to nie zapomnij dodać stałej preprocesora SFML_DYNAMIC.

No i sprawdź czy linkujesz wszystko w odpowiedniej kolejności. ;)

Udostępnij tego posta


Odnośnik do posta
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?

Udostępnij tego posta


Odnośnik do posta
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.

Udostępnij tego posta


Odnośnik do posta
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\. :)

Udostępnij tego posta


Odnośnik do posta
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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Nawet konsoli nie widać ?

Jeśli wszystko skompilowało się jak trzeba, to okienko powinno się wyświetlić, wstaw build log.

Udostępnij tego posta


Odnośnik do posta
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.

Udostępnij tego posta


Odnośnik do posta
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.

Udostępnij tego posta


Odnośnik do posta
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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jak napisałem wyżej już się przerzuciłem na Code::Blocks. Tytuł tematu może trochę zmylić, po prostu wiele pytań w jednym wątku. Nie, nic nie zaznaczyłem.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

To zwyczajnie poszukaj w zakładach u góry czegoś w rodzaju kompiluj/kompiluj & uruchom....

Bo poprawnie się kompiluje, a kod z tutka musi działać(bo działa)...

Udostępnij tego posta


Odnośnik do posta
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?

Udostępnij tego posta


Odnośnik do posta
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.

Udostępnij tego posta


Odnośnik do posta
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?

Udostępnij tego posta


Odnośnik do posta
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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Oczywiście nie zrzucam winy na C::B, to widocznie mój głupiutki móżdżek czegoś nie rozumie. Gdyby komuś jeszcze coś wpadło do głowy, to pisać, na pewno spróbuję. Z góry dziękuje wszystkim za pomoc.

Udostępnij tego posta


Odnośnik do posta
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%. :)

Udostępnij tego posta


Odnośnik do posta
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ś.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
biblioteki .lib sa kompilowane przez kompilator visuala. biblioteki .a sa budowane przez gcc.

Poprzez lib'y rozumiem biblioteki (pliki), nie rozszerzenie.

Udostępnij tego posta


Odnośnik do posta
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 :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Please, use SFML 2.1 :)

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Wiem, że SFML 2.1 jest najnowszy ale przy kreatorze projektu, miałem wskazać 2.0, lub 1.6.

Udostępnij tego posta


Odnośnik do posta
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! :)

Udostępnij tego posta


Odnośnik do posta
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 ;)

Udostępnij tego posta


Odnośnik do posta
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.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

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

Tylko 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ę tutaj.

Zaloguj się tutaj

  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

×