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

Auteur Sujet: [Résolu][SFML 2.2/SFML-master][VS2013] Problème de linker  (Lu 1798 fois)

0 Membres et 1 Invité sur ce sujet

xtd

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
[Résolu][SFML 2.2/SFML-master][VS2013] Problème de linker
« le: Janvier 08, 2015, 11:47:57 pm »
Bonjour,

Désolé de vous embêter encore une fois avec ce genre de questions, mais voilà une journée que je bute sur un problème d'éditions de liens, et je ne sais plus trop quoi faire.

Lorsque je tente de compiler l'exemple de base (afficher un cercle vert), j'ai cette erreur :
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall sf::String::String(char const *,class std::locale const &)" (__imp_??0String@sf@@QAE@PBDABVlocale@std@@@Z) referenced in function _main
1>main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall sf::String::~String(void)" (__imp_??1String@sf@@QAE@XZ) referenced in function _main

Pourtant les chemins semblent corrects, puisque le compileur configuré en verbose semble trouver des éléments à la fois dans sfml-graphics-d.lib et sfml-window-d.lib, par exemple :
1>        Found "__declspec(dllimport) public: __thiscall sf::Color::Color(unsigned char,unsigned char,unsigned char,unsigned char)" (__imp_??0Color@sf@@QAE@EEEE@Z)
1>          Referenced in main.obj
1>          Loaded sfml-graphics-d.lib(sfml-graphics-d-2.dll)

...

1>        Found "__declspec(dllimport) public: __thiscall sf::VideoMode::VideoMode(unsigned int,unsigned int,unsigned int)" (__imp_??0VideoMode@sf@@QAE@III@Z)
1>          Referenced in main.obj
1>          Loaded sfml-window-d.lib(sfml-window-d-2.dll)

Pour info:
J'utilise Visual Studio 2013 édition Community (v12 Update 4) sur w7pro 64.

Par ailleurs, même si j'ai un background de développeur web, je débute en C++. J'ai déjà compilé quelques petites choses (les exemples de C++ Primer 11) sans problème notable et je souhaitais plonger un peu plus en avant en suivant le livre SFML Game Development, mais me voilà refoulé à l'entrée comme un malpropre.

Plus de détails :

Cette même erreur apparaît aussi bien lorsque j'utilise les binaires du site que ma propre compilation des dernières sources du github.

Dans un premier temps, j'ai téléchargé la release binaire stable 2.2 32-bits pour VS2013. J'ai suivi le tutoriel SFML et Visual Studio :
- Nouveau Projet Win32 console, projet vide, pas d'en-têtes précompilées ni de checks SDL
- Ajout d'un fichier main.cpp avec le code d'exemple
- Éditions des propriétés du projet pour configurer les références (voir captures plus bas).

Après un premier épluchage des forums, j'ai pris mon courage à deux mains et j'ai décidé de compiler SFML à partir des sources :
- checkout du master sur github
- chargement du vcvars.bat idoine dans une console + cmake pour générer les makefile pour nmake
- compilation et installation dans un nouveau dossier des targets debug et release avec nmake.
- soulagement, aucun problème de compilation, c'est pas si compliqué en fait, et j'ai un beau dossier tout propre
- création d'un nouveau projet ...

... et retour à la case départ.  :'(

Merci d'avance pour votre temps.

Captures

La configuration du projet :





Et le dossier correspondant :

(par ailleurs, les examples issus de ma compilation sont tout à fait fonctionnels une fois qu'ils ont accès aux dlls correspondantes dans bin)
« Modifié: Janvier 09, 2015, 09:18:27 am par xtd »

G.

  • Hero Member
  • *****
  • Messages: 1593
    • Voir le profil
Re : [SFML 2.2/SFML-master][VS2013] Problème de linker
« Réponse #1 le: Janvier 09, 2015, 12:44:16 am »
Tu link sfml-graphics et sfml-window qui dépendent tous les 2 de sfml-system mais je ne te vois pas link sfml-system. Tu ne l'aurais pas oublié ? :p

xtd

  • Newbie
  • *
  • Messages: 2
    • Voir le profil
Re : [SFML 2.2/SFML-master][VS2013] Problème de linker
« Réponse #2 le: Janvier 09, 2015, 09:18:07 am »
Oh - mon - dieu !

C'était effectivement le nœud du problème. Comment ai-je pu laisser passer ça ?  :-[

Merci du fond du cœur !