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

Auteur Sujet: [SFML2.0 Git] Problème de link statique  (Lu 2500 fois)

0 Membres et 1 Invité sur ce sujet

koolgraph

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
[SFML2.0 Git] Problème de link statique
« le: Décembre 21, 2012, 04:18:09 pm »
Arff... à chaque fois que je reprend avec sfml c'est toujours la même histoire, une sale galère pour avoir un projet fonctionnel :(

Bon j'ai télécharger les sources à partir du Git, j'ai créer un projet pour vs2012. Au début j'avais fait avec _std_lib, ça m'avais sortit les dll avec des .lib très très léger. Après quelques heures de recherches (parce que j'y parviens toujours, c'est juste souvent très long) J'ai bien vu que c'était pas normal et j'avais déjà recompiler sans le _std_lib du cmake. J'ai ajouter les chemins d'include et de Libs dans mon projet. J'ai link les librairies comme suit : sfml-graphics-s-d.lib; sfml-window-s-d.lib; sfml-system-s-d.lib.

Malgré plusieurs tentatives j'ai toujours ces erreurs :
Citer
error LNK2019: unresolved external symbol "public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (??0VideoMode@sf@@QAE@III@Z) referenced in function "private: virtual bool __thiscall SFMLWindow::Create(void)" (?Create@SFMLWindow@@EAE_NXZ)

error LNK2019: unresolved external symbol "public: class sf::Vector2<int> __thiscall sf::Window::getPosition(void)const " (?getPosition@Window@sf@@QBE?AV?$Vector2@H@2@XZ) referenced in function "private: virtual class Engine::Utils::Rect<long> const __thiscall SFMLWindow::getWindowSize(void)const " (?getWindowSize@SFMLWindow@@EBE?BV?$Rect@J@Utils@Engine@@XZ)

error LNK2019: unresolved external symbol "public: __thiscall sf::RenderWindow::RenderWindow(class sf::VideoMode,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,unsigned int,struct sf::ContextSettings const &)" (??0RenderWindow@sf@@QAE@VVideoMode@1@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@IABUContextSettings@1@@Z) referenced in function "private: virtual bool __thiscall SFMLWindow::Create(void)" (?Create@SFMLWindow@@EAE_NXZ)

error LNK2019: unresolved external symbol "public: __thiscall sf::RenderWindow::RenderWindow(struct HWND__ *,struct sf::ContextSettings const &)" (??0RenderWindow@sf@@QAE@PAUHWND__@@ABUContextSettings@1@@Z) referenced in function "private: virtual bool __thiscall SFMLWindow::CreateFromHandle(int *)" (?CreateFromHandle@SFMLWindow@@EAE_NPAH@Z)

edit: ha oui et j'ai aussi définit SFML_STATIC dans les commandes du préprocesseur. Tu veux bien me dire ce que j'oublie encore Laurent ? :)
« Modifié: Décembre 21, 2012, 04:30:00 pm par koolgraph »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2.0 Git] Problème de link statique
« Réponse #1 le: Décembre 21, 2012, 05:40:27 pm »
Les options CMake sont définies telles que par défaut il n'y a rien besoin de toucher pour avoir un build standard (ie. comme la release finale) de SFML. Il faut changer quelque chose uniquement si tu as des besoins spécifiques. Garde bien ça en tête pour la prochaine fois ;)

Je n'ai pas trop d'idée concernant les erreurs, en me basant sur ce que tu dis, ça devrait être bon. Du coup t'as dû faire une bourde autre part.

Si tu suis scrupuleusement les tutoriels, càd en faisant les choses simplement, sans bidouiller des trucs un peu partout, ça devrait marcher out-of-the-box.
Laurent Gomila - SFML developer

koolgraph

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
Re : [SFML2.0 Git] Problème de link statique
« Réponse #2 le: Décembre 21, 2012, 05:51:05 pm »
en redéfinissant le projet cmake, sans rien avoir "bidouiller" sa devrait fonctionner ? Parce que c'est ça que j'ai fait.

en gardant les options cmake par défaut il build les dll... je veut le linker en statique donc il faut décocher BUILD_SHARED_LIBS (comme indiqué autant dans le tooltip que dans le tuto) Ce que je fait. Ensuite j'ouvre le projet et je build le projet ALL-BUILD.

C'est alors qu'il build les libs -s-d.lib, ce qui est nécéssaire. Les options CMake sont donc ok.

J'ajoute le chemin pour les includes, pour les libs, je les link dans le bon ordre, je met la référence a SFML_STATIC... j'ai meme créer un "Empty Project" pour vérifier et sans succès...

edit: en remodifiant les options cmake pour ajouter les examples, ils compilent comme il faut et fonctionnent bien... Je comprend vraiment pas pourquoi ils trouvent pas les symboles...
« Modifié: Décembre 21, 2012, 06:10:48 pm par koolgraph »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2.0 Git] Problème de link statique
« Réponse #3 le: Décembre 21, 2012, 10:14:31 pm »
Tout à l'air bon.

Puisque les exemples fonctionnent, compare les options de l'un d'entre eux à ton propre projet. Tu verras peut-être une différence.
Laurent Gomila - SFML developer

koolgraph

  • Newbie
  • *
  • Messages: 48
    • Voir le profil
Re : [SFML2.0 Git] Problème de link statique
« Réponse #4 le: Décembre 22, 2012, 08:36:10 am »
en fait la grosse différence que je voit c'est que les symboles ne sont pas lié statiquement mais directement via les dépendances de projet. J'ai pas vraiment vu autre chose.

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32504
    • Voir le profil
    • SFML's website
    • E-mail
Re : [SFML2.0 Git] Problème de link statique
« Réponse #5 le: Décembre 22, 2012, 09:36:27 am »
Dans ce cas essaye de modifier les exemples pour qu'ils lient SFML "normalement" plutôt que via les dépendances inter-projets.

Il ne faut pas hésiter à bidouiller dans tous les sens pour trouver des indices. Il ne faut pas croire que je suis meilleur qu'un autre pour trouver les erreurs, s'il n'y a rien qui saute aux yeux je ne te serai pas d'une grande aide. Le meilleur moyen de solutionner ton problème c'est de secouer tout ce que tu peux jusqu'à ce que quelque chose tombe par terre ;)
Laurent Gomila - SFML developer