Witam wszystkich użytkowników forum :)
Na czas wakacji (wiadomo, więcej czasu) postanowiłem się pobawić (i nie tylko) z C++ i biblioteką SFML, szczególnie w kierunku tworzenia gry 2D.
Dziś próbowałem różnych poradników, w których pokazywali jak zainstalować bibliotekę SFML w Code::Blocks (właśnie z tego IDE korzystam :)). Po 'prawidłowej' konfiguracji sprawdzałem czy wszystko dobrze zrobiłem, po prostu kopiowałem przykłady z tych samych stron, na których była instalacja/konfiguracja SFML'a. Zawsze jakiś błąd przy kompilacji :D Oczywiście to był mój błąd, ponieważ już kiedyś instalowałem Code::Blocks i ponoć zapamiętało różne linki/liby itd i wszystko się gryzło. Usunąłem wszystko i zacząłem od nowa z tym o to poradnikiem:
http://www.edparrish.net/common/sfmlcb.htmlWłasnym oczom nie uwierzyłem, gdy po wszystkim chciałem odpalić ich przykład, no i się odpaliło :D (tak dokładniej to okienko z zielonym kółkiem w środku :)). Chciałem już zaczynać naukę, najpierw popatrzyłem do dokumentacji SFML'a 2.1, dokładnie z tej strony:
http://www.sfml-dev.org/documentation/2.1/Tam na prawie samym początku jest "Krótki przykład, który pokazuje nam jak łatwo używać SFMLa", skopiowałem go i przy próbie kompilacji ujrzałem następujące błędy :
ZAKŁADKA 'BUILD LOG' :
`_imp___ZN2sf5MusicD1Ev'
C:/CodeBlocks/projects/test-sfml/test.cpp:43: undefined reference to `_imp___ZN2sf5MusicD1Ev'
collect2.exe: error: ld returned 1 exit status
Process terminated with status 1 (0 minute(s), 0 second(s))
5 error(s), 0 warning(s) (0 minute(s), 0 second(s))
I ZAKŁADKA 'BUILD MESSAGES' :
||=== Build: Debug in test-sfml (compiler: GNU GCC Compiler) ===|
obj\Debug\test.o||In function `main':|
C:\CodeBlocks\projects\test-sfml\test.cpp|18|undefined reference to `_imp___ZN2sf5MusicC1Ev'|
C:\CodeBlocks\projects\test-sfml\test.cpp|19|undefined reference to `_imp___ZN2sf5Music12openFromFileERKSs'|
C:\CodeBlocks\projects\test-sfml\test.cpp|22|undefined reference to `_imp___ZN2sf11SoundStream4playEv'|
C:\CodeBlocks\projects\test-sfml\test.cpp|43|undefined reference to `_imp___ZN2sf5MusicD1Ev'|
C:\CodeBlocks\projects\test-sfml\test.cpp|43|undefined reference to `_imp___ZN2sf5MusicD1Ev'|
||=== Build failed: 5 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
A kod tego przykładu jest następujący :
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
int main()
{
sf::RenderWindow window( sf::VideoMode( 800, 600 ), "SFML window" );
sf::Texture texture;
if( !texture.loadFromFile( "cute_image.jpg" ) )
return EXIT_FAILURE;
sf::Sprite sprite( texture );
sf::Font font;
if( !font.loadFromFile( "arial.ttf" ) )
return EXIT_FAILURE;
sf::Text text( "Hello SFML", font, 50 );
sf::Music music;
if( !music.openFromFile( "nice_music.ogg" ) )
return EXIT_FAILURE;
music.play();
while( window.isOpen() )
{
sf::Event event;
while( window.pollEvent( event ) )
{
if( event.type == sf::Event::Closed )
window.close();
}
window.clear();
window.draw( sprite );
window.draw( text );
window.display();
}
return EXIT_SUCCESS;
}
Czy błąd leży po mojej stronie? Czy dobrze się domyślam, że chodzi o ustawienia Linkera ?
Jeśli tak, to proszę o dalsze nakierowanie mnie :)
P.S Takie pytanie krótkie jeszcze :)
Czy przy każdym, nowo-założonym projekcie będę musiał ustawiać wszystkie 'Properties', to linkowanie itd ?
Z góry dzięki za wszystkie odpowiedzi :)