Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SFML 2.1] undefined reference to '...'

Ostatnio zmodyfikowano 2014-06-30 00:33
Autor Wiadomość
Gaara
Temat założony przez niniejszego użytkownika
[SFML 2.1] undefined reference to '...'
» 2014-06-29 22:15:34
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.html

Wł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 :

C/C++
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>
int main()
{
    // Create the main window
    sf::RenderWindow window( sf::VideoMode( 800, 600 ), "SFML window" );
    // Load a sprite to display
    sf::Texture texture;
    if( !texture.loadFromFile( "cute_image.jpg" ) )
         return EXIT_FAILURE;
   
    sf::Sprite sprite( texture );
    // Create a graphical text to display
    sf::Font font;
    if( !font.loadFromFile( "arial.ttf" ) )
         return EXIT_FAILURE;
   
    sf::Text text( "Hello SFML", font, 50 );
    // Load a music to play
    sf::Music music;
    if( !music.openFromFile( "nice_music.ogg" ) )
         return EXIT_FAILURE;
    // Play the music
    music.play();
    // Start the game loop
    while( window.isOpen() )
    {
        // Process events
        sf::Event event;
        while( window.pollEvent( event ) )
        {
            // Close window : exit
            if( event.type == sf::Event::Closed )
                 window.close();
           
        }
        // Clear screen
        window.clear();
        // Draw the sprite
        window.draw( sprite );
        // Draw the string
        window.draw( text );
        // Update the window
        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 :)
P-112950
DejaVu
» 2014-06-29 22:58:28
To się nie rozchodzi o kod, tylko o to, że nie dodajesz bibliotek do linkera.

http://cpp0x.pl/kursy​/Kurs-SFML-2-x-C++​/Instalacja-i-konfiguracja​/Konfiguracja-SFML-2-0-Code-Bl​ocks​/464
http://cpp0x.pl/kursy​/Kurs-SFML-2-x-C++​/Instalacja-i-konfiguracja​/Test-dzialania-biblioteki-SFM​L-2-0​/462

/edit:
Jeżeli udało Ci się odpalić przykład, który podałeś to znaczy, że teraz chcesz coś robić z dźwiękami i nie dolinkowałeś biblioteki SFML Audio.

Patrz:
P-112956
Gaara
Temat założony przez niniejszego użytkownika
» 2014-06-30 00:33:33
Działa, dzięki wielkie.! :) Zamykam.
P-112964
« 1 »
  Strona 1 z 1