Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: Problème de link: undefined reference to `sf::Clock::Clock()'  (Lu 2540 fois)

0 Membres et 1 Invité sur ce sujet

petitg1987

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Bonjour,

J'ai compilé SFML dans mingw avec cmake (BUILD_SHARED_LIBS = false) & mingw32-make.
Tout semble bien se passer. Ensuite, je copie les fichiers "*.a" générés dans mon dossier des libs de mingw.

Dans les options de link de mon programme, j'ai bien mis: "-lsfml-system-s -lsfml-window-s" mais malgré cela, j'ai ce genre d'erreur lors du link:
Citer
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x15d): undefined reference to `sf::Clock::Clock()'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x4c1): undefined reference to `sf::err()'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x5cd): undefined reference to `sf::seconds(float)'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x631): undefined reference to `sf::err()'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x74a): undefined reference to `sf::operator!=(sf::Time, sf::Time)'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x75a): undefined reference to `sf::Clock::getElapsedTime() const'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x766): undefined reference to `sf::operator-(sf::Time, sf::Time)'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x76e): undefined reference to `sf::sleep(sf::Time)'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x776): undefined reference to `sf::Clock::restart()'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x784): undefined reference to `sf::err()'
C:/mingw/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/5.3.0/../../../../lib/libsfml-window-s.a(Window.cpp.obj):Window.cpp:(.text+0x8fe): undefined reference to `sf::Clock::restart()'
...

Info: lors de la compilation de mes fichiers cpp, j'ai définit "SFML_STATIC".

Qu'est-ce que j'ai mal fait ?
Merci d'avance.

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : Problème de link: undefined reference to `sf::Clock::Clock()'
« Réponse #1 le: Avril 17, 2016, 09:25:32 pm »
Lorsque vous liez à plusieurs bibliothèques SFML, assurez-vous de les lier dans le bon ordre, c'est très important pour GCC. La règle est que les bibliothèques qui dépendent d'autres doivent être ajoutées en premier dans la liste. Chaque bibliothèque SFML dépend de sfml-system, et sfml-graphics dépend aussi de sfml-window. Ainsi, le bon ordre pour ces trois bibliothèques serait : sfml-graphics, sfml-window, sfml-system -- comme dans la capture d'écran ci-dessus.

petitg1987

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : Problème de link: undefined reference to `sf::Clock::Clock()'
« Réponse #2 le: Avril 17, 2016, 10:58:09 pm »
Merci beaucoup, ça fonctionne.
Intuitivement, je pensais qu'il fallait mettre l'ordre inverse.