Partage
  • Partager sur Facebook
  • Partager sur Twitter

Image -> Code::Block & SFML: Ou ?

ou mettre l'image dans les fichier ?

Sujet résolu
3 février 2018 à 12:29:34

Ou mettre un image pour la load en sprite ou texture dans Code::Blocks avec SFML ?

Bonjours ! Pouvez-Vous m'aider ? :)


Le message d'Erreur: 

undefined reference to '_Imp__ZN2sf7Texture12loadFromFileERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKNS_4RectIiEE'

Quand je fait le code:

#pragma region includes
#include <SFML/Graphics.hpp>
#include <string>
#include <iostream>
#include <cstdlib>
#include "secondo.h"
#pragma endregion includes


#pragma region variables
sf::RenderWindow window;
sf::RectangleShape rect;
int speed = 3;
sf::Texture perso;
sf::Sprite sprite_perso;
#pragma endregion variables


#pragma region prototypes
void gestion_clavier();
#pragma endregion prototypes


int main()
{
    //le message cmd.exe
    std::cout << "Lancement du jeu" << std::endl;

    //créer la fenêtre
    sf::RenderWindow window;

    //Met la fenêtre en 1200x600
    window.create(sf::VideoMode(1200, 600), "Matcyborg's game");

    //Modifier la position
    window.setPosition(sf::Vector2i(80, 40));

    //maximum de fps
    window.setFramerateLimit(60);

    //taille du rectangle
    rect = PB_Rect(10, 10, 32, 32);

    if (!perso.loadFromFile("data/images/player.png")) /*EREUR ICI AVEC LE CARRE ROUGE*/
    {
        std::cout << "Erreur de chargement de l'image intitulée: player.png" << std::endl;
    }

    perso.setSmooth(true);

    sprite_perso.setTexture(perso);

    //Si (while) La fenêtre est ouverte
    while (window.isOpen())
    {
        //Création de l'event (oui juste sa)
        sf::Event event;
        //Test d'évènement
        while (window.pollEvent(event))
        {
            //Si le type d'event est: "Event::Closed", quand on appuie sur la croix
            if (event.type == sf::Event::Closed)
                //Bah sa la ferme (parce qu'on peux faire d'autres choses)
                window.close();
        }

        /*gestion clavier*/
        gestion_clavier();

        //on dessine le rectangle, l'affiche, et le met a jour
        window.draw(rect);
        window.draw(sprite_perso);
        window.display();
        window.clear();
    }

    //Retourne au début
    return 0;
}

/*gestion clavier*/
void gestion_clavier()
{
    //haut
    if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
    {
        rect.move(0, -speed);
    }

    //bas
    else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
    {
        rect.move(0, speed);
    }

    //gauche
    else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
    {
        rect.move(-speed, 0);
    }

    //droit
    else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
    {
        rect.move(speed, 0);
    }
}

Et l'arrière [.h] (au cas ou)

#include <SFML/Graphics.hpp>

//fonction crée un rectangle
sf::RectangleShape PB_Rect(int posX, int posY, int width, int height)
{
    sf::RectangleShape rect(sf::Vector2f(width, height));
    rect.setPosition(posX, posY);
    rect.setFillColor(sf::Color(255, 0, 0, 255));
    return rect;
}

J'ai cherché partout sur le web... pendant 3 jours... Mais apparemment personne n'as jamais eu ce problème !


Merci d'avance !!!

-
Edité par MathiasLoliter 3 février 2018 à 13:44:35

  • Partager sur Facebook
  • Partager sur Twitter
3 février 2018 à 13:17:52

Bonjour d'abord ! L'erreur que tu obtiens semble provenir d'un problème de link.

Vérifie que tes dlls ont bien linkés.

  • Partager sur Facebook
  • Partager sur Twitter

Blanc sans N ça fait blac, comme quoi sans haine on est tous égaux.

3 février 2018 à 13:46:22

Merci De me répondre !

Je suis désolé mais je suis un "Débutant" Sur le langage donc pourriez-Vous être plus précis ?

Un dll, je sais ce que c'est, mais comment verifie-t-on ?

Et que doit-on trouver en erreur/ou pas dedans !

Désolé de faire perdre du temps - Merci encore - matcyborg

-
Edité par MathiasLoliter 3 février 2018 à 13:54:54

  • Partager sur Facebook
  • Partager sur Twitter
3 février 2018 à 14:08:51

Cela veut dire que lorsque que tu as donné le chemin des dll de SFML tu as pu te tromper. Pour info il ne faut pas utiliser le projet prédéfini code::blocks pour SFML il semble ne pas marcher. Pour être sur de réussir utlise le tuto sur SFML.

-
Edité par Vildevil 3 février 2018 à 14:10:21

  • Partager sur Facebook
  • Partager sur Twitter
Les forums sont des Dolipranes, il faut savoir les utiliser au bon moment.
3 février 2018 à 14:42:19

Depuis SFML 2.2, lors d'une liaison statique, il faut aussi lier toutes les dépendances de SFML. Par exemple: si vous liez à sfml-window-s ou sfml-window-s-d sur Windows, il faudra aussi lier à winmm, gdi32 et opengl32. Parfois ces bibliothèques seront listées sous "Inherited values" mais les ajouter une fois de plus ne devrait pas poser de problème.

Je pense que tout est a cause de sa (et je n'ai pas "SFML_STATIC" dans "#define")

Mais... Ces explications sont très très très vague pour moi...

Pourriez-Vous m'aider ? Comment fait-on pour l'avoir ? Car les exemples, c'est bien, mais bon...

J'ai cherché dans les topics, les derniers (je pense) sont en dessous de SFML 2.2...

HELP

merci - matcyborg

-
Edité par MathiasLoliter 3 février 2018 à 15:03:08

  • Partager sur Facebook
  • Partager sur Twitter
3 février 2018 à 15:20:31

As-tu tenté de recompiler et a tu donné a code::blocks les différents lib sinon rajoute SFML_STATIC dans le #define de Code::Blocks simplement.
  • Partager sur Facebook
  • Partager sur Twitter
Les forums sont des Dolipranes, il faut savoir les utiliser au bon moment.
3 février 2018 à 15:38:58

Merci... Mais... Toujours pas

(PS: Recompiler ? / Les lib):                   Mes Screens:

Tout ces screens sont les seules choses inscrites dans les "Project Build Options" avec le "SFML_STATIC"

Voila, j'espère que vous comprendrez ma détresse :')

-
Edité par MathiasLoliter 3 février 2018 à 18:50:41

  • Partager sur Facebook
  • Partager sur Twitter
3 février 2018 à 21:02:43

Essaye de compiler toi même les libs ou de changer ta version, je ne vois pas vraiment ou est le problème part là.
  • Partager sur Facebook
  • Partager sur Twitter
Les forums sont des Dolipranes, il faut savoir les utiliser au bon moment.
3 février 2018 à 23:15:42

Merci !

C'est quoi "Compiler des lib" et Comment fait-on ? J'ai (encore, sans sa, plus de question :)) cherché sur google (ou duckduckgo pour les Brm#/*_\:!5rmm) et je trouve directement comment installer SFML donc...

PS: Et est-ce obligé que le problème vienne de la ?

Merci encore, j'avance, vous m'aidez beaucoup - Sans ironie - matcyborg

-
Edité par MathiasLoliter 3 février 2018 à 23:18:49

  • Partager sur Facebook
  • Partager sur Twitter
3 février 2018 à 23:32:33

En fait quand je dis compiler les libs c'est que tu compile toi même SFLM à partir du code source (le tuto) pour ton compilateur. Etant donné que tu utilises CodeBlocks tu as du choisir parmi les versions suivantes lors du téléchargement :

Laquelle as-tu choisi ? Il faut faire attention car les compilateurs GCC ne réagissent pas toujours de la même façon ce qui peut entrainer des conflits, il faut donc prendre la même version que ton compilateur.

Juste comme ça, quand j'utilisais SFML pour un petit jeu je codais sur Visual Studio 2012 et ça marchais nickel, tu devrais peut être essayer en plus l'interface est plutôt sympa et agréable.

-
Edité par Vildevil 3 février 2018 à 23:38:02

  • Partager sur Facebook
  • Partager sur Twitter
Les forums sont des Dolipranes, il faut savoir les utiliser au bon moment.
3 février 2018 à 23:33:01

Ces types de problèmes sont souvent liés au fait que tu utilises une version de SFML non compatible avec ton compilteur. Ou un problème de linkage.

Ici pour Code::Blocks, on a 4 versions téléchargeable possible :

  • GCC 4.9.2 TDM (SJLJ) - 32-bit
  • GCC 6.1.0 MinGW (DW2) - 32-bit
  • GCC 4.9.2 TDM (SJLJ) - 64-bit
  • GCC 6.1.0 MinGW (SEH) - 64-bit

Étant donné, qu'il est conseillé d'utiliser les versions 32-bit, le choix est donc limité aux 2 premières versions. Vérifie que c'est bien l'une des 2 et que celle-ci soit compatible avec la version du compilateur utilisée par Code::Blocks.

Maintenant pour le problème de linkage tout dépend si tu souhaites link en version dynamique ou statique. Si c'est en static il faut impérativement inclure les dépendances dans le linker, comme indiqué dans la doc. (et bien faire attention aux extensions -s et -d, c'est souvent une source d'erreur).

Et si tu n'y arrives pas, ba continue d'essayer, en relisant la doc encore et encore, c'est comme ça que j'ai procédé la première fois perso :D.

-
Edité par Guit0Xx 3 février 2018 à 23:39:28

  • Partager sur Facebook
  • Partager sur Twitter

...

4 février 2018 à 0:13:01

Merciiii !

Pour "Wiliam", moi j'ai pris (par tuto) GCC 4.9.2 TDM (SJLJ)-32-bit et j'ai le Compiler (que j'ai téléchargé) TDM-GCC-32 (grace au site SFML car avant de l'installer code::blocks de générait rien a cause de "vous n'avez pas de compiler")

Après sa marchait donc avec la TDM-GCC-32, la j'ai téléchargé GCC 4.9.2 TDM (SJLJ)-32-bit (SFML), j'ai trouvé un tutoriel génial en anglais qui expliquait tout et qui, figurez vous, était le seul tutoriel youtube qui marchait pour moi (1 jour sur youtube je m'en souviens).

J'ai donc tout linké ( |(plus bas)| ). Tout marchait merveilleusement bien, et LA, je fais tranquillement mes test, et voila qu'est survenu mon probleme de "loadFromFiles("player.png"); !                             Vouala mon ystoare !

PS:

-Sa change quoi dynamique ou statique ? Si les deux m'aident a faire charger mon image dans mon code ! Je prend les deux ! :)

-Et j'ai essayé visual studio express, et j'ai fui direct, je pensait que se serait plus simple code::blocks... Mais au point ou j'en suis... :)

-
Edité par MathiasLoliter 4 février 2018 à 0:17:55

  • Partager sur Facebook
  • Partager sur Twitter
4 février 2018 à 0:21:44

Le problème de loadFromFile arrive souvent normalement si tu lances le programmes depuis l’exécutable du dossier (en mettant tous les dll nécessaires) cela devrait marcher, j'avais le même problème.
  • Partager sur Facebook
  • Partager sur Twitter
Les forums sont des Dolipranes, il faut savoir les utiliser au bon moment.
4 février 2018 à 18:58:01

Merci !! maintenant c'est fait mais l'erreur est :

undefined reference to `sf::Texture::loadFromFile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, sf::Rect<int> const&)'



-
Edité par MathiasLoliter 4 février 2018 à 21:36:44

  • Partager sur Facebook
  • Partager sur Twitter
5 février 2018 à 17:39:56

C'est bon ! en fait c'était les fichiers mal placés dans "bin" et "obj" !

Mais bon... j'ai un autre probleme... il me dit qu'il ne trouve pas sfml-graphics-d-2.dll pourtant il y est !

bruh,

just, bruh

-
Edité par MathiasLoliter 5 février 2018 à 21:05:33

  • Partager sur Facebook
  • Partager sur Twitter
5 février 2018 à 21:23:36

Envoie une photo de ton dossier si ça se trouve le problème est tout bête
  • Partager sur Facebook
  • Partager sur Twitter
Les forums sont des Dolipranes, il faut savoir les utiliser au bon moment.
5 février 2018 à 21:43:02

Ceci ?

(SFML/bin)

-
Edité par MathiasLoliter 5 février 2018 à 21:46:25

  • Partager sur Facebook
  • Partager sur Twitter
5 février 2018 à 21:45:23

C'est tout bête il faut que tu copie colle tout ça la ou se compile ton .exe, dans ton cas dans le dossier debug
  • Partager sur Facebook
  • Partager sur Twitter
Les forums sont des Dolipranes, il faut savoir les utiliser au bon moment.
6 février 2018 à 16:08:11

C'est fait depuis le début......

dans [NomDuProjet]/bin/Debug

et     [NomDuProjet]/obj/Debug

  • Partager sur Facebook
  • Partager sur Twitter
6 février 2018 à 17:17:57

Tu pourrais nous donner la version exacte de GCC installé sur ton PC  ?

-
Edité par Guit0Xx 6 février 2018 à 17:18:45

  • Partager sur Facebook
  • Partager sur Twitter

...

7 février 2018 à 13:04:40

La TDM-GCC-5.1.0-3,

mais svp envoyer moi tout ce qu'il faut je suis à bout, j'ai désinstallé code::blocks et quand je le réinstalle, SFML veut plus, je désintalle SFML, et quand je le réinstalle, code::blocks veut plus...

SVP envoyer moi ce qu'il faut télécharger... Je connais les manip par cœur maintenant mais il me faut SFML,  et Code::Blocks

-
Edité par MathiasLoliter 7 février 2018 à 14:29:32

  • Partager sur Facebook
  • Partager sur Twitter
8 février 2018 à 2:03:38

Bonsoir,

Bon, sentant toute cette détresse émanée de ton post, j'ai testé de mon côté en installant la dernière version de Code::Blocks (17.12)(mingw). Et visiblement, il y a un souci de compatibilité entre les versions de SFML proposées et la version de MinGW (gcc 5.1.0) fournie par Code::Blocks par default. Je me suis heurté à plusieurs problèmes de linkage.

Pour régler le souci, j'ai installé la dernière version de MinGW disponible sur le site officiel.

Ce que je te propose, c'est de repartir sur une installation clean de tout ce bazarre, étape par étape.

Avant de réinstaller Code::Blocks, on va installer la dernière version de MinGW.


INSTALLATION DE MINGW
--------------------------------------------


Direction le site http://www.mingw.org/, dans la colonne de gauche clique sur "Download"
De là, tu tombes sur une page sourceForge, clique sur le dossier "Installer"
Ensuite, télécharge "mingw-get-setup.exe"
Une fois téléchargé, lance le et clique sur "Install".

Un chemin d'installation te sera demandé, il est très fortement conseillé de laisser le chemin d'installation par defaut : C:\MinGW

Pour le reste, tu peux laisser les cases cochées par defaut.
Une fois fait -> CONTINUE

Apparaît ensuite une fenêtre proposant des packages à installer. Ici on va en installer 2, tu peux cocher :
  • mingw32-base
  • mingw32-gcc-g++
(Au passage tu peux voir la version fournie de gcc -> 6.3.0)

Une fois ces 2 cases cochées, clique en haut à gauche sur Installation -> Apply Changes -> Apply
L'installation des packages se lance, plus qu'à attendre un peu. Une fois terminé, si tout s'est bien passé, les cases précédemments cochées devraient être verte, ensuite on peut fermer la fenêtre.


INSTALLATION ET CONFIGURATION DE CODE::BLOCKS
---------------------------------------------------------------------------------------------


Direction http://www.codeblocks.org/downloads/26, choisis ensuite la version "codeblocks-17.12mingw-setup.exe" (ici j'ai pris la version livré avec mingw intégré, histoire d'avoir un compilo de base quand même).

Lance ensuite l'installation, il te demandera ce que tu veux installer, sélectionne TOUT.
Une fois l'installation finie, tu peux lancer Code::Blocks.

À son premier lancement, il procèdera à une auto-detection du compilateur et si tout se passe bien il indique que le compilateur utilisé par défaut est GNU GCC, clique ensuite sur OK.

Une fois dans Code::Blocks -> crée un nouveau projet -> projet vide
Dans l'assistant il faudra ensuite sélectionner les 2 configs DEBUG et RELEASE.

Maintenant que le projet est créé, on va configurer le compilateur en indiquant son chemin, pour ça, clique sur le menu Settings -> Compiler...

Une fois dedans : Onglet "Toolchain executables" et tu changes le chemin d'installation par : C:\MinGW

Au passage, dans l'onglet "Compiler Flags", tu peux cocher [-std=c++1z](aka C++17) si ce n'est pas déjà fait ainsi que [-Wall] et [-Wextra] pour les Warnings, en sachant qu'on peut en ajouter beaucoup d'autres, mais ceci est un autre sujet ^^.

Tu peux valider.

À partir de là si tu le souhaites, pour t'assurer que le compilateur soit bien configuré, tu peux créer un fichier main.cpp type "Hello World", histoire d'être sûr qu'il soit bien en place.

Si tu as testé et que tu as vu "Hello World" s'afficher, je te félicite ^^. On va pouvoir passer à l'étape suivante : la configuration du projet SFML.


CONFIGURATION DU PROJET SFML (STATIC)
---------------------------------------------------------------------------

Donc pour commencer, il va nous falloir la bonne version pré-compilée de SFML qui sera compatible avec notre version de gcc 6.3.0. Bon sur le site on ne trouve pas directement de version pré-compilé compatible avec gcc 6.3.0 mais la version 6.1.0 l'est.

Donc, celle qui nous intéresse ici c'est GCC 6.1.0 MinGW (DW2) - 32-bit.
Une fois téléchargé, extrait le tout dans un coin bien rangé.

Ensuite pour le linkage, j'ai une préférence pour la méthode STATIC. L'avantage c'est que tu n'as pas besoin de t'embêter à copier les .dll, tout est automatiquement inclu dans l'executable à la compilation. Du coup j'utiliserai cette méthode, après bien sûr libre à toi de choisir ;).

On passe donc à la configuration du projet. Pour ce faire, retour sur le projet précédemment crée sur Code::Blocks (ou un nouveau peu importe), puis menu Project -> Build options


Dans la config GLOBAL du projet:

Onglet Compiler settings  ->  Onglet #defines -> écrit SFML_STATIC

Onglet Search Directories -> Onglet Compiler -> Add -> .....\SFML-2.4.2\include
                                                              Onglet Linker   -> Add -> .....\SFML-2.4.2\lib

(Bon j'imagine que ce n'est pas la peine de préciser que dans l'onglet Search Directories, les chemins à indiquer sont censés correspondre au dossier précédemment extrait de notre version de SFML ;).

Dans la config DEBUG du projet:

Onglet Linker settings -> ajoute

sfml-graphics-s-d
sfml-window-s-d
sfml-system-s-d
opengl32
freetype
jpeg
winmm
gdi32

Dans la config RELEASE du projet:

Onglet Linker settings -> ajoute

sfml-graphics-s
sfml-window-s
sfml-system-s
opengl32
freetype
jpeg
winmm
gdi32

Pour être sûr, avant de compiler ton projet, tu peux faire un clean (clic droit sur ton projet -> Clean) et rebuild le projet (clic droit sur ton projet -> Rebuild).

Ça y est ! En principe, à partir de là, tu pourras compiler ton projet SFML. Et si ça ne fonctionne pas, ba réessaie :).

-
Edité par Guit0Xx 8 février 2018 à 19:56:40

  • Partager sur Facebook
  • Partager sur Twitter

...

9 février 2018 à 16:09:19

UN DIEU, J AI UN DIEU DEVANT MOI (ton ego doit s'élever, a cet instant... Si j'y arrive !)

MAIS.... Comment je peux te remercier, que dois-je faire, tu est mon DIEU...

SA MAAAAAAAAAAAAAAAARCHE

AAAAaaAAAaAaaRRrRrrrrRg

(je pète un câble de temps en temps, et c'est maintenant :D )

PS: comment on met en résolu ? Si sa existe bien sûr xD

-
Edité par MathiasLoliter 9 février 2018 à 16:11:05

  • Partager sur Facebook
  • Partager sur Twitter
9 février 2018 à 16:51:13

MathiasLoliter a écrit:

MAIS.... Comment je peux te remercier, que dois-je faire

Ah ça tombe bien, je pensais changer de voiture prochainement. Ou sinon juste un merci, c'est toi qui vois ^^.

MathiasLoliter a écrit:

PS: comment on met en résolu ? Si sa existe bien sûr xD

Le bouton "Sujet résolu" tout en haut du post.

  • Partager sur Facebook
  • Partager sur Twitter

...

9 février 2018 à 18:18:55

 une 
  • Aston Martin sa vas ?
  • Partager sur Facebook
  • Partager sur Twitter
Anonyme
27 juin 2018 à 0:23:53

Arf merci bien tu me sauve   je met cette page en favori au cas ou ^^

Guit0Xx a écrit:

Bonsoir,


Bon, sentant toute cette détresse émanée de ton post, j'ai testé de mon côté en installant la dernière version de Code::Blocks (17.12)(mingw). Et visiblement, il y a un souci de compatibilité entre les versions de SFML proposées et la version de MinGW (gcc 5.1.0) fournie par Code::Blocks par default. Je me suis heurté à plusieurs problèmes de linkage.


Pour régler le souci, j'ai installé la dernière version de MinGW disponible sur le site officiel.


Ce que je te propose, c'est de repartir sur une installation clean de tout ce bazarre, étape par étape.


Avant de réinstaller Code::Blocks, on va installer la dernière version de MinGW.



INSTALLATION DE MINGW
--------------------------------------------



Direction le site http://www.mingw.org/, dans la colonne de gauche clique sur "Download"
De là, tu tombes sur une page sourceForge, clique sur le dossier "Installer"
Ensuite, télécharge "mingw-get-setup.exe"
Une fois téléchargé, lance le et clique sur "Install".


Un chemin d'installation te sera demandé, il est très fortement conseillé de laisser le chemin d'installation par defaut : C:\MinGW

Pour le reste, tu peux laisser les cases cochées par defaut.
Une fois fait -> CONTINUE


Apparaît ensuite une fenêtre proposant des packages à installer. Ici on va en installer 2, tu peux cocher :
  • mingw32-base
  • mingw32-gcc-g++
(Au passage tu peux voir la version fournie de gcc -> 6.3.0)


Une fois ces 2 cases cochées, clique en haut à gauche sur Installation -> Apply Changes -> Apply
L'installation des packages se lance, plus qu'à attendre un peu. Une fois terminé, si tout s'est bien passé, les cases précédemments cochées devraient être verte, ensuite on peut fermer la fenêtre.



INSTALLATION ET CONFIGURATION DE CODE::BLOCKS
---------------------------------------------------------------------------------------------



Direction http://www.codeblocks.org/downloads/26, choisis ensuite la version "codeblocks-17.12mingw-setup.exe" (ici j'ai pris la version livré avec mingw intégré, histoire d'avoir un compilo de base quand même).


Lance ensuite l'installation, il te demandera ce que tu veux installer, sélectionne TOUT.
Une fois l'installation finie, tu peux lancer Code::Blocks.


À son premier lancement, il procèdera à une auto-detection du compilateur et si tout se passe bien il indique que le compilateur utilisé par défaut est GNU GCC, clique ensuite sur OK.


Une fois dans Code::Blocks -> crée un nouveau projet -> projet vide
Dans l'assistant il faudra ensuite sélectionner les 2 configs DEBUG et RELEASE.


Maintenant que le projet est créé, on va configurer le compilateur en indiquant son chemin, pour ça, clique sur le menu Settings -> Compiler...

Une fois dedans : Onglet "Toolchain executables" et tu changes le chemin d'installation par : C:\MinGW


Au passage, dans l'onglet "Compiler Flags", tu peux cocher [-std=c++1z](aka C++17) si ce n'est pas déjà fait ainsi que [-Wall] et [-Wextra] pour les Warnings, en sachant qu'on peut en ajouter beaucoup d'autres, mais ceci est un autre sujet ^^.


Tu peux valider.


À partir de là si tu le souhaites, pour t'assurer que le compilateur soit bien configuré, tu peux créer un fichier main.cpp type "Hello World", histoire d'être sûr qu'il soit bien en place.


Si tu as testé et que tu as vu "Hello World" s'afficher, je te félicite ^^. On va pouvoir passer à l'étape suivante : la configuration du projet SFML.



CONFIGURATION DU PROJET SFML (STATIC)
---------------------------------------------------------------------------


Donc pour commencer, il va nous falloir la bonne version pré-compilée de SFML qui sera compatible avec notre version de gcc 6.3.0. Bon sur le site on ne trouve pas directement de version pré-compilé compatible avec gcc 6.3.0 mais la version 6.1.0 l'est.


Donc, celle qui nous intéresse ici c'est GCC 6.1.0 MinGW (DW2) - 32-bit.
Une fois téléchargé, extrait le tout dans un coin bien rangé.


Ensuite pour le linkage, j'ai une préférence pour la méthode STATIC. L'avantage c'est que tu n'as pas besoin de t'embêter à copier les .dll, tout est automatiquement inclu dans l'executable à la compilation. Du coup j'utiliserai cette méthode, après bien sûr libre à toi de choisir ;).


On passe donc à la configuration du projet. Pour ce faire, retour sur le projet précédemment crée sur Code::Blocks (ou un nouveau peu importe), puis menu Project -> Build options


Dans la config GLOBAL du projet:


Onglet Compiler settings  ->  Onglet #defines -> écrit SFML_STATIC


Onglet Search Directories -> Onglet Compiler -> Add -> .....\SFML-2.4.2\include
                                                              Onglet Linker   -> Add -> .....\SFML-2.4.2\lib

(Bon j'imagine que ce n'est pas la peine de préciser que dans l'onglet Search Directories, les chemins à indiquer sont censés correspondre au dossier précédemment extrait de notre version de SFML ;).


Dans la config DEBUG du projet:


Onglet Linker settings -> ajoute


sfml-graphics-s-d
sfml-window-s-d
sfml-system-s-d
opengl32
freetype
jpeg
winmm
gdi32


Dans la config RELEASE du projet:


Onglet Linker settings -> ajoute


sfml-graphics-s
sfml-window-s
sfml-system-s
opengl32
freetype
jpeg
winmm
gdi32


Pour être sûr, avant de compiler ton projet, tu peux faire un clean (clic droit sur ton projet -> Clean) et rebuild le projet (clic droit sur ton projet -> Rebuild).


Ça y est ! En principe, à partir de là, tu pourras compiler ton projet SFML. Et si ça ne fonctionne pas, ba réessaie :).

-
Edité par Guit0Xx 8 février 2018 à 19:56:40



  • Partager sur Facebook
  • Partager sur Twitter
27 juin 2018 à 1:10:20

Par contre depuis que la version SFML 2.5 est sortie, la partie du tuto concernant MinGW n'est plus valide, enfin en admettant qu'on veuille utiliser la version 2.5 bien sûr ;). Si c'est le cas, il faut télécharger la version de MinGW proposée sur la page de téléchargement de la SFML. Ici :

Une fois téléchargé, extraire le tout. Ensuite, perso j'ai copié-collé le dossier mingw32 à la racine du DD, histoire d'avoir un chemin facile à indiquer au compilateur.

Pour finir au niveau de la config du compilo, on indique le chemin du dossier de notre version de MinGW préalablement téléchargée ainsi que les paramètres, qui ne sont ni plus ni moins que les exécutables utilisés pour la compilation (si mes souvenirs sont bons, par défault en principe il y a "mingw-" devant, mais pour le coup il faut le virer ce préfixe), ce qui donne :

Et voilà, si jamais ça peut servir pour ceux qui veulent passer à la version 2.5.

Pour le reste du tuto, c'est strictement la même chose.

-
Edité par Guit0Xx 27 juin 2018 à 1:28:22

  • Partager sur Facebook
  • Partager sur Twitter

...

Anonyme
27 juin 2018 à 12:04:04

Avec la sdl  il y a moins de conflits de ce genre  , mais bon je voulais  une bibliothèque vraiment faite pour le c++  .
  • Partager sur Facebook
  • Partager sur Twitter