Forum de la communauté SFML

Aide => Général => Discussion démarrée par: Crone123 le Octobre 23, 2013, 10:57:43 pm

Titre: Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 23, 2013, 10:57:43 pm
Bonjour,
J'ai suivis le tuto, et j'ai réussi a compiler la SFML 2.1 pour Visual Studio 2013 en 32bits.

Pour le 64bits, je lance vcvars64.bat au lieu de vcvars32.bat

Sauf que ça me compile du 32bits.
Donc je modifie les types de compilation, et remplace du coup Win32 par x64, sauf que du coup j'ai une erreur qui me dit que Clock.obj est de type x86 et pas x64.
Je suppose qu'il y a un lien vers des libs en x86 a convertir en x64, mais quoi?

Merci :)

PS: J'ai vu que ça avait compilé en 32bits, parce que pour mon projet a la compilation en 64bits il m'as dit que la SFML était en x86.
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 24, 2013, 07:41:50 am
Tu as choisi quoi comme générateur dans CMake pour compiler en 64 bits ? Si ce n'est pas "NMake makefiles" ça ne sert à rien d'invoquer vcvars64.bat, il faut plutôt choisir explicitement le générateur correspondant ("Visual Studio 2013 x64").
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 24, 2013, 02:21:50 pm
Bah, j'ai fait:
/blablablabla/blablabla/vcvars64.bat
cmake CMakelists.txt
et j'ai ouvert ALLBUILD avec Visual, c'était bien ça qu'il fallait faire?
Merci :)
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 24, 2013, 02:41:54 pm
Non pas du tout. Relis bien la doc de CMake et le tutoriel de compilation de SFML, tout est très clairement expliqué.

Pour faire simple (mais ça ne t'empêche pas de potasser la doc tout de même) :

1. il faut choisir un générateur

2. si tu génères une solution Visual Studio alors il faut ouvrir le fichier solution, pas le projet ALL_BUILD

3. "cmake .", pas "cmake CMakeLists.txt"
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 24, 2013, 02:43:29 pm
Le tutoriel de compilation n'explique pas pour compiler en 64bits, et il ne propose aucune variable de CMake pour faire ça...
J'ai été ici:
http://www.sfml-dev.org/tutorials/2.1/start-vc-fr.php
Et là:
http://www.sfml-dev.org/tutorials/2.1/compile-with-cmake-fr.php
Merci :)
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 24, 2013, 02:49:36 pm
Le problème c'est le générateur, comme je te l'ai dit dans mon précédent post et dans celui encore avant.

Or d'après ta ligne de commande tu ne choisis pas de générateur. Donc là on a déjà un souci ; choisis le générateur que tu veux (cf. mon premier message : soit "NMake Makefiles" en ayant appelé vcvars64.bat, soit "Visual Studio 2013 x64") et ensuite on pourra continuer à discuter si tu as toujours le même problème.
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 24, 2013, 03:19:07 pm
Alors, ça a l'air d'avoir compilé.
Mais j'ai l'erreur suivante a la compilation de mon projet:
Erreur 1 error LNK2001: symbole externe non résolu __imp_glPointSize
J'ai bien rajouté ceci dans dépendance supplémentaires:
openal32.lib
sfml-graphics.lib
sfml-window.lib
sfml-system.lib
sfml-main.lib
glew.lib
freetype.lib
jpeg.lib
Et j'ai bien lié la SFML dans éditeur de lien en rajoutant le dossier Release au lien.
Aussi, j'ai crée un dossier x64 contenant les .lib et .dll des dépendances de la SFML, et je l'ai rajouté au lien.
Merci :)

EDIT: Voici les includes dont a besoin mon projet:
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <vector>
#include <Windows.h>
#include <GL/gl.h>
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 24, 2013, 03:51:16 pm
C'est la seule erreur que tu aies ? Tu utilises d'autres fonctions OpenGL dans ton code ?
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 24, 2013, 03:52:23 pm
Non, j'ai aussi:
Erreur 2 error LNK2001: symbole externe non résolu __imp_glLineWidthMais ça se limite a ça :)
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 24, 2013, 04:11:28 pm
Il te manque sûrement opengl32.lib dans ce cas. Et il y a une raison particulière pour que tu lies toutes les dépendances de SFML alors que tu lies celle-ci dynamiquement ?
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 24, 2013, 04:37:36 pm
Ah oui, effectivement, j'ai buggué.
C'est openal qui est dans le dossier.

Mais la SFML ne fourni pas opengl32.lib, il est fourni ailleurs?
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 24, 2013, 05:01:31 pm
Il est fourni par ton compilateur.
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 24, 2013, 05:32:48 pm
OK, donc la SFML a compilé, et ma bibliothèque a aussi compilé, ça m'as donné sp.dll

Sauf que voilà, après dans un projet de test de la bibliothèque (composé uniquement d'un main.cpp)
J'ai cette erreur:
Erreur 1 error LNK2001: symbole externe non résolu "public: class sf::Vector2<float> & __cdecl sp::Animation::movement(void)" (?movement@Animation@sp@@QEAAAEAV?$Vector2@M@sf@@XZ)J'ai pourtant indiqué dans les répertoires ou sont les bibliothèques, le nom du répertoire contenant sp.dll

Est ce qu'il faut faire comme pour GCC, et lui dire -lnomdelalib quelque part?
Merci :)

EDIT: Même en générant sp.lib et en l'ajoutant aux dépendances, j'ai la même erreur :o
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 24, 2013, 09:03:51 pm
Tu as bien utilisé les directives d'export ?
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Crone123 le Octobre 24, 2013, 10:33:02 pm
Euh, je crois qu'avant dans QtCreator y en avait (dans mon ancienne lib), mais ici je crois pas.
Mais j'avais un truc de Qt tout fait pour ça, je dois mettre quoi pour que ça marche dans Visual?

(Sous Linux, la lib se compile et fonctionne, aussi bien en .a qu'en .so)

Je dois mettre quoi exactement?
Merci :)
Titre: Re : Compiler la SFML 2.1 pour Visual Studio 2013 en 64bits
Posté par: Laurent le Octobre 25, 2013, 07:45:43 am
Pourquoi ne lis tu pas tout simplement un peu de doc sur la création de bibliothèque dynamique sous Windows, au lieu d'essayer de tout deviner ? C'est pas les articles qui manquent...