Forum de la communauté SFML
Aide => Général => Discussion démarrée 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.
-
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").
-
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 :)
-
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"
-
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 :)
-
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.
-
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>
-
C'est la seule erreur que tu aies ? Tu utilises d'autres fonctions OpenGL dans ton code ?
-
Non, j'ai aussi:
Erreur 2 error LNK2001: symbole externe non résolu __imp_glLineWidth
Mais ça se limite a ça :)
-
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 ?
-
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?
-
Il est fourni par ton compilateur.
-
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
-
Tu as bien utilisé les directives d'export ?
-
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 :)
-
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...