Bienvenue, Invité. Merci de vous connecter ou de vous inscrire. Avez-vous oublié d'activer ?

Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Rick_Cplusplus

Pages: [1]
1
Bonjour la communauté,

Dans le descriptif de la classe sf:: mouse il est dit :

Quote:
static Vector2i sf::Mouse::getPosition ( const Window & relativeTo)    

Get the current position of the mouse in window coordinates.
This function returns the current position of the mouse cursor, relative to the given window.
(...)
UnQuote.

Chaque window a une vue par defaut (defaultView).
Mais lorsqu'il existe plusieurs vues pour une window, sf::Mouse::getPosition renvoie-t-il les coordonnées du curseur de la souris par rapport à la vue par défaut (defaultView) ou par rapport à la vue courante (celle activée par setView) ?

Rick.

2
Bonjour la comunauté,

J'ai un petit souci avec ce code (j'ai essayé de le rendre minimal) :

#include <iostream>
#include <math.h>
#include <vector>
#include <SFML/Graphics.hpp>

class Hexagone
{
    public:
        Hexagone(unsigned int, unsigned int, double);

        unsigned int q; // no ligne
        unsigned int r; // rang dans la ligne

        double m_rayon; // rayon de l'hexagone

        sf::ConvexShape polygon; // drawable representant l'hexagone

    private:

};


Hexagone::Hexagone(unsigned int q = 0, unsigned int r = 0, double rayon = 0): q(q), r(r), m_rayon(rayon), polygon(6)
{

    const double PI = 3.14159265358979323846;
    double theta(0);

    // parametrage du polygone
    for(unsigned int i(0); i<6; i++)
    {
        theta = (60 * i + 30)* PI / 180;
        polygon.setPoint(i, sf::Vector2f(m_rayon * cos(theta), m_rayon * sin(theta)));
    }
    polygon.setOutlineColor(sf::Color::Black);
    polygon.setOutlineThickness(-2);
    if(r%2 == 0) polygon.setFillColor(sf::Color::Blue);
    else polygon.setFillColor(sf::Color::Green);
}

class Carte
{
    public:
        Carte(unsigned int, unsigned int);

        void dessine(sf::RenderWindow &); // dessine les hexagones (dessine la carte)

        unsigned int m_nbhex; // nombre d'hexagones par ligne
        unsigned int m_nblg; // nombre de lignes

        unsigned int m_lx; // taille X du mode fenetre pour affichage de la carte
        unsigned int m_ly; // taille Y du mode fenetre pour affichage de la carte
        double m_r; // rayon des hexagones calculé en fonction de la fenêtre

        double m_ech; // echelle d'affichage

        std::vector <Hexagone*> listHex; // conteneur des pointeurs vers les hex

    private:

};

Carte::Carte(unsigned int nblg, unsigned nbhex): m_nbhex(nbhex), m_nblg(nblg), m_lx(0), m_ly(0), m_r(0), m_ech(1), listHex{}
{
    //recuperation du mode fenetre de la carte
    std::vector<sf::VideoMode> modes = sf::VideoMode::getFullscreenModes();

    // choix du mode le plus grand apres le mode full screen
    sf::VideoMode mode = modes[1];

    m_lx = mode.width;
    m_ly = mode.height;

    // determination du rayon des hex svt taille fenetre
    double rx = m_lx / (sqrt(3) * (nbhex + .5));
    double ry = m_ly / (1.5 * (nblg - 1) + 2);
    m_r = rx;
    if (ry < rx) m_r = ry;

    // instantiation des hexagones
    for(unsigned int i(0); i<m_nblg; i++)
    {
        for(unsigned int j(0); j<m_nbhex; j++)
        {
            Hexagone *hex = new Hexagone(i, j, m_r);
            listHex.push_back(hex);
        }
    }

    //definition de la taille de la fenetre
    m_lx = nbhex * m_r * sqrt(3) + m_r * sqrt(3) / 2;
    m_ly = m_r * (2 + 1.5 * (nblg - 1));
}


void Carte::dessine(sf::RenderWindow &fenetre)
{
    double offset(0);

    for(unsigned int i(0); i < listHex.size(); i++)
    {
        if(listHex[i] -> q % 2 == 0) offset = sqrt(3) * m_r;
        else offset = sqrt(3) * m_r / 2;
        listHex[i] -> polygon.setPosition(((sqrt(3) * m_r * listHex[i] -> r) + offset), ((1.5 * m_r * listHex[i] -> q) + m_r));

        fenetre.draw(listHex[i] -> polygon);
    }
    return;
}


int main()
{
    // instantiation Carte
    unsigned nbhex = 50;
    unsigned int nblg = 20;
    Carte *carte = new Carte(nblg, nbhex);

    // creation fenetre
    bool pleinEcran = false;
    sf::RenderWindow fenetre;
    auto style = (pleinEcran ? sf::Style::Fullscreen : sf::Style::Default);
    fenetre.create({carte -> m_lx, carte -> m_ly, 32}, "Carte", style);

    // creation de la vue et de son viewport
    sf::View view1 = fenetre.getDefaultView();
    view1.setViewport(sf::FloatRect(0,0,.9,1));
    fenetre.setView(view1);

    sf::Vector2i prevMouse(0 , 0);

    bool leftButtonPressed(false);
    bool leftButtonReleased(true);

    while(fenetre.isOpen())
    {
        // memorisation position souris en début de frame
        prevMouse = sf::Mouse::getPosition(fenetre);

        // gestion des evenements
        sf::Event event;
        while (fenetre.pollEvent(event))
        {
            // detection et fermeture fenetre
            if (event.type == sf::Event::Closed)
            {
                fenetre.close();
            }

            // detection click button gauche
            if (event.type == sf::Event::MouseButtonPressed)
            {
                if (event.mouseButton.button == sf::Mouse::Left)
                {
                    leftButtonPressed = true;
                    leftButtonReleased = false;
                }
            }

            // detection de-click button gauche
            if (event.type == sf::Event::MouseButtonReleased)
            {
                if (event.mouseButton.button == sf::Mouse::Left)
                {
                    leftButtonPressed = false;
                    leftButtonReleased = true;
                }
            }

            // Ici il a du code pour zoomer / dé zoomer qui fonctionne bien donc je l'ai enlevé...
            {
            // code qui fonctionne...
            }

            // si bouton gauche maintenu, deplacement vue
            if(event.type == sf::Event::MouseMoved && leftButtonPressed)
            {
                sf::Vector2f dpl(prevMouse.x - event.mouseMove.x, prevMouse.y - event.mouseMove.y); // <- ici dpl vaut (0, 0) et je ne comprend pas pourquoi...
                view1.move(dpl);
            }

        }
        //effacement
        fenetre.clear(sf::Color::Black);

        //MaJ vue
        fenetre.setView(view1);

        //dessin
        carte -> dessine(fenetre);

        //affichage
        fenetre.display();
    }
    return 0;
}
 

Les 2 classes (les attributs "public" ne le resteront pas à terme bien sûr  ;)) sont opérantes et ne font pas parti de mon pb, je ne les ai laissées que pour l’exhaustivité du code.

Ce que je n'arrive pas à comprendre, c'est pourquoi le vecteur dpl vaut (0, 0) (voir commentaire dans le main) alors que la souris a bougée...
Une piste à me suggérer ?

Si mon approche est incorrecte, existe t-il une meilleure façon de procéder pour déplacer la vue d'un vecteur correspondant au mouvement de la souris entre 2 frames lorsque le bouton gauche de la souris est maintenu appuyé entre ces 2 frames ?

Rick.

3
Bonjour la communauté,

Mon code, compile et s’exécute correctement mais la console me renvoie le message ci-après :

An internal OpenGL call failed in Texture.cpp(98).
Expression:
   glFlush()
Error description:
   GL_INVALID_OPERATION
   The specified operation is not allowed in the current state.

Process returned 0 (0x0)   execution time : 14.212 s
Press any key to continue.


Apparemment cela se passe dans Texture. CPP à la ligne 98 (un flush non autorisé ?..)

En exécution pas à pas, il semble que cela arrive au moment de la construction d'une fenêtre qui fait appel à une texture passée par référence à une texture auparavant crée suite à un chargement (réussi) depuis un fichier... Bizarre  :o
Une idée ?

Rick.

4
Graphique / Affichage sf::Text retourné d'une fonction
« le: Août 06, 2019, 03:14:48 pm »
Bonjour la communauté,

En raffinant au maximum mon problème d'affichage de sf::text de mon dernier post , j'arrive à ceci :
#include <iostream>
#include <SFML/Graphics.hpp>
#include "Fenetre.h"

sf::Text dessineText(unsigned int const htr = 20)
{
    sf::Font font;
    font.loadFromFile("Arial.ttf");
    std::string duTexte("essai");
    sf::Text texte(duTexte, font, htr);
    return texte;
}

int main()
{
    Fenetre *pFenetre = new Fenetre("Ma fenetre", sf::Vector2u (1024, 768));

    sf::Text texte;
    texte = dessineText();

    while(!pFenetre -> fini())
    {
        pFenetre -> evenement();
        pFenetre -> efface();
        pFenetre -> dessine(texte); //<=  là il se perd en conjectures (et moi aussi)...
        pFenetre -> affiche();
    }

    delete pFenetre;
    return 0;
}

Le code de ma classe fenêtre ne semble pas en cause.
A tout hasard, voici le header :
#ifndef FENETRE_H
#define FENETRE_H

#include <string>
#include <SFML/Graphics.hpp>

class Fenetre
{
    public:
        Fenetre(const std::string &, const sf::Vector2u &);
        ~Fenetre();

        // Methode
        void efface(); // efface le contenu de la fenetre
        void dessine(sf::Drawable &drawable); // dessine un objet dessinable
        void affiche(); // affiche le contenu de la fenetre
        void evenement(); // gère les evenemente et met à jour la fenetre
        bool fini(); // retourne le statut ouvert ou ferme de la fenetre

    private:
        //Methode
        void configure(); // configuration de la fenêtre (titre et taille)
        void ferme(); // ferme la fenêtre

        // Attribut
        sf::RenderWindow m_fenetre; // fenêtre créé par la classe
        sf::Vector2u m_taille; // taille de la fenêtre
        std::string m_titre; // titre de la fenêtre
        unsigned int m_bpp; // nb de bit par pixel
        bool m_fini; // statut ouvert / fermé de la fenêtre
};

#endif // FENETRE_H

Et le CPP associé :
#include "Fenetre.h"

Fenetre::Fenetre(const std::string &titre, const sf::Vector2u &taille) :
m_fenetre(), m_taille(taille), m_titre(titre), m_bpp(32), m_fini(false)
{
    configure();
}

Fenetre::~Fenetre()
{
        ferme();
}

void Fenetre::configure()
{
    m_fenetre.create({m_taille.x, m_taille.y, m_bpp}, m_titre, sf::Style::Default);
    return;
}

void Fenetre::ferme()
{
    m_fenetre.close();
    return;
}

void Fenetre::evenement()
{
    sf::Event event;
    while (m_fenetre.pollEvent(event))
    {
        if (event.type == sf::Event::Closed)
        {
            m_fini = true;
        }
    }
    return;
}

void Fenetre::efface()
{
    m_fenetre.clear(sf::Color::Black);
    return;
}

void Fenetre::dessine(sf::Drawable &drawable)
{
    m_fenetre.draw(drawable);
    return;
}

void Fenetre::affiche()
{
    m_fenetre.display();
    return;
}

bool Fenetre::fini()
{
    return this -> m_fini;
}

Le code compile (hélas :'( ) mais l’exécution plante.
En usant du debugger pas à pas, la ligne fatale est celle appelant la méthode "dessine" qui tente d'exécuter :
m_fenetre.draw(drawable);

Le debugger indique alors :
#0 0x69162e5c   std::less<unsigned int>::operator() (this=0x28fb44, __x=<error reading variable>, __y=@0x28f9b0: 20) (C:/Dev/MinGW32-PosixDwarf730r0/lib/gcc/i686-w64-mingw32/7.3.0/include/c++/bits/stl_function.h:386)

Ce qui pour moi est inintelligible..
Voilà, si quelqu'un a une idée, moi je sèche... :-\

Rick.

5
Fenêtrage / Doute sur MouseButtonPressed et MouseButtonReleased
« le: Août 01, 2019, 10:25:18 pm »
Bonsoir la communauté,

Les tutoriels sont vraiment bien fait mais j'ai du mal à lever un doute sur le fonctionnement des évènements MouseButtonPressed et MouseButtonReleased

Le tuto dit :
Les évènements sf::Event::MouseButtonPressed et sf::Event::MouseButtonReleased sont déclenchés lorsqu'un bouton souris est pressé/relâché.

Ok mais ce que je cherche à comprendre c'est si ces événements signalent un front montant / descendant (le bouton de la souris change d'état) ou un statut (le bouton de la souris est à l'état pressé / relâché).

Autrement dit, si je code :

int i(0);
sf::Event event;
    while (m_fenetre.pollEvent(event))
    {
         if (event.type == sf::Event::MouseButtonPressed)
        {
            // click gauche...
            if (sf::Mouse::isButtonPressed(sf::Mouse::Left))
            {

                i++
               
            }
        }
    }
 

et que durant l’exécution je maintiens le bouton gauche de la souris appuyé, mon i s'incrémente-il une seule fois ou une fois par frame ?

Rick.

6
Général / Update GCC - faut-il reinstaller SFML ?
« le: Juillet 31, 2019, 06:28:53 pm »
Bonjour la communauté,

Je viens de faire un update de GCC (8.2.0) et je l'ai "rattaché" à Code::Blocks (17.12).
Lorsque je compile un code type hello world", pas de pb. 8)

Lorsque je compile un code plus complexe appelant les fonctions de la SFML, le compilateur me dit :

ld.exe||cannot find -lsfml-graphics-d|
ld.exe||cannot find -lsfml-window-d|
ld.exe||cannot find -lsfml-system-d|

 :-\

Du coup je me pose 2 questions :
- GCC 8.2.0 gère t-il SFML ? (j'espère...)
- Dois-je ré-installer SFML dans mon projet en suivant le tuto d'installation "SFML et Code::Blocks (MinGW)" ?

Rick.


 

7
Graphique / Heritage de la classe drawable
« le: Juillet 17, 2019, 04:59:35 pm »
Bonjour la communauté,

Je souhaite faire une classe bouton (pas original mais utile).
cette classe a, entre autre, 2 membres :
- un sf::Text qui contient le texte à afficher sur le bouton,
- un sf::RectangleShape qui entoure le texte pour rendre visible le bouton.

Question : puis-je combiner (si oui comment ?) ces 2 membres pour constituer un sf::Sprite à retourner à ma fenêtre pour l'affichage du bouton ou suis-je obligé de retourner les 2 membres via 2 "getter" séparés ?  ???

Une alternative serait de faire hériter ma classe bouton de sf::Drawable mais ça me fait un peu peur en terme de syntaxe... :-[
Salutations,

Rick.

8
Fenêtrage / Imbriquer des events, possible ou pas ?
« le: Juillet 12, 2019, 10:13:13 am »
Bonjour la communauté,

Je voudrais créer un déplacement de vue dans une fenêtre qui ressemble à du "drag and drop".
Le comportement attendu c'est :
sur un bouton (left) souris maintenu enfoncé, suivi d'un mouvement souris, récupérer le vecteur du déplacement souris, et déplacer la vue courante de ce vecteur tant que le bouton n'est pas relâché.

Or le tuto précise bien que event est une union ce que je traduis (peut être à tort) par : une instance de event ne peut traiter qu'un evenement à la fois.

Mais peut-on instancier 2 event (event1 et event2) et les imbriquer dans la même fenêtre via 2 pollEvent ?
Quelque chose comme ça :
sf::event event1;
sf::event event2;
while (fenetre.pollEvent(event1))
        {
        ...
        if (event1.type == sf::Event::MouseButtonPressed
        {
                while (fenetre.pollEvent(event2))
                        {
                                 ...
                        }
        }
        ...
 

Si oui, je tente l'implémentation (mais il y a peut être "plus simple" pour faire ça) :)
Si non, avez-vous une piste pour implémenter "autrement"' ? ::)
Salutations,

Rick.

9
Réseau / Taille maximum d'un packet
« le: Octobre 04, 2018, 08:06:41 pm »
Bonjour La communauté,

Il y a t-il une taille maximum (en octet) pour "remplir" un packet ?
si je fais :
sf::packet paquet;
int max;
for(int i(0); i<max; i++)
{
     paquet << "00000 00 000 00";
}
 
quel est la valeur de maxi de max ?

Merci de m'avoir lu,
Rick.

10
Discussions générales / SFML et SFGUI
« le: Septembre 07, 2018, 09:12:09 am »
Bonjour la communauté,

J'ai entendu parler de SFGUI et ja me pose la question de s compatibilité avec SFML, et d'une façon plus générale des liens entre les 2 (les 2 commencent par SF)...
Il semble que SFGUI soit moins "abouti" que SFML (je ne l'ai vu que sur GitHub et dans la langue du barde immortel), existe-t-il un forum dédié du type de celui là ?
any clue? ::)

Rick.

11
Bonjour la communauté,

Dans ma classe Serveur, j'ai une fonction qui lance le listener,
Dans ma classe Client, j'ai une fonction qui demande une connexion au serveur.

Le pb, (sans doute "classique") c'est que si dans le même programme je lance l'une de ces fonctions, elle garde la main en attendant  l'autre qui du coup n'arrive jamais puisque le pgm est en attente... J'ai essayé de passer les sockets en mode "non blocking" mais cela ne semble pas remédier à la situation.  (si ce n'est pas clair, je peux présenter les codes. ;) )

Je voudrais éviter le multi-threading juste pour ça (le pgm n'en a pas besoin par ailleurs).
Existe-il une idée rusée pour que la socket "locale" puisse appeler le serveur lorsque celui-ci attend en mode listener ?

Sinon, je pense modifier la fonction d'appel de connexion pour le cas particulier de la socket "locale" et l'ajouter au selecteur et son pointeur au vector listant les pointeurs sur les socket en passant son adresse ainsi :

dans Server.cpp
code supprimé pke toufo ^^
 

dans Client.cpp (avec include de serveur.h dans client.h et &serveur passé argument de la fonction)
code supprimé pke toufo ^^
 

Un tel code visant donc :
- à connecter la socket locale au serveur,
- à ajouter la socket locale au selecteur du serveur et
- à ajouter son pointeur au vector listant les pointeurs sur les socket connectées
fonctionnerait-il? ::)

Merci de m'avoir lu,
Rick.

12
Réseau / [Résolu] le selector ne lit pas une socket qui envoie un packet
« le: Septembre 03, 2018, 07:20:22 pm »
Bonjour la communauté,

Avant de vous fournir mon code, je met le contexte :

Le serveur doit attendre la connexion d'un nombre précis de clients (2 à 7).
 => pour se faire j'utilise un "listener", chaque nouvelle socket est indexée dans un vector, et ajoutée à un selector.
Note je n'ajoute pas le listener au selector puisque le nombre de client atteint, aucune autre connexion ne doit s'ajouter.

Lorsque le nombre est atteint, les échanges serveurs / client peuvent commencer.
=> sur le serveur, utilisation de selector "wait" et boucle "for" sur le vector pour déterminer la socket concernée, puis réception du packet
=> sur le client, socket send packet dès que la connexion est établie.

je lance le serveur en débug et le client en release. impossible de voir le selector quitter le "wait" et lancer la lecture du vector (comme si le packet n'était pas envoyé par le client...) Je sèche  ???

ci dessous le code serveur minimal (pour le test je n'attend qu'un seul client):
#include <iostream>
#include <vector>
#include <SFML/Network.hpp>

using namespace std;

int main()
{
    unsigned int nbJoueurs(1); // un seul client pour le test

    // vector pour stocker les socckets des joueurs
    std::vector <sf::TcpSocket*> V_client;

    // declaration du socket (allo) de l'écouteur
    sf::TcpListener allo;

    //Declaration d'un selecteur de socket
    sf::SocketSelector selecteur;

    // affectation au port (breton 56 ^^) à écouter
    unsigned short int port=56000;
    if (allo.listen(port) != sf::Socket::Done)
    {
         // erreur...
        std::cout << "port inécoutable" << std::endl;
        return -1;
    }
    else std::cout << "Allo ? J'ecoute le port 56000" << std::endl; // serveur lancé

    bool tousPresents(false); // passe à true si tous les joueurs ont un socket attitré

    // boucle de surveillance et connexion des joueurs attendus
    while(!tousPresents)
    {
        // déclaration d'un socket à affecter au prochain client qui le demande
        sf::TcpSocket joueur;
        if (allo.accept(joueur) == sf::Socket::Done)
        {
            V_client.push_back(&joueur);
            selecteur.add(joueur);
        }
        if (V_client.size() == nbJoueurs) tousPresents=true;
    }
    std::cout << "nos " << nbJoueurs << " joueurs sont connectés sur le serveur." << std::endl;
    std::cout << "V_client size = " << V_client.size() << std::endl;

    //boucle d'échange de données
    sf::Packet paquet;
    sf::Int32 x(0);
    bool flag(false);
    while(!flag)
    {
        //boucle d'attente de message
        if (selecteur.wait()) // <= c'est là que ça semble foirer...
        {
            for(unsigned int i(0); i<V_client.size(); i++)
            {
                if (selecteur.isReady(*V_client[i]))
                {
                    V_client[i]->receive(paquet);
                    paquet >> x;
                    std::cout << "paquet reçu ; x vaut : " << x << endl;
                    if (x==-1) flag=true;
                    x=-10;
                    paquet << x;
                    system("pause");
                    V_client[i]->send(paquet);
                }
            }
        }
    }
    return 0;
}
 

et le code client :
#include <iostream>
#include <SFML/Network.hpp>

using namespace std; // DSL...

int main()
{
    sf::Int32 x = 10;
    unsigned short int port(56000);
    bool flag(false);
    sf::TcpSocket socket;
    sf::Socket::Status statut = socket.connect("192.168.1.14", port); // Ipv4 locale du serveur
    if (statut != sf::Socket::Done)
    {
        return -1;
    }
    else
    {
        std::cout << "connexion établie sur port " << port << std::endl;
        sf::Packet paquet;
        paquet << x;
        if (socket.send(paquet)!= sf::Socket::Done)
        {
            std::cout << "erreur d'envoi de paquet" << std::endl;
            system("pause");
        }
        while (!flag)
        {
         // pour patienter
        }
        return 0;
}

 

Je devrais recevoir le packet et en extraire x qui vaudrait 10, mais non...  :-\
Une piste ?

Rick.

13
Bonsoir la communauté,

Je me pose une question en étudiant les tutoriels quand je lis le code qui suit :
 while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
 

Pourquoi instancier un sf::Event à chaque frame (dans la boucle while) et non une seule fois (i.e. avant le while) ?
Ça m'intrigue...

Rick.


14
Bonjour la communauté,

Tout ou presque est dans le titre :
je voudrai que lorsqu’on redimensionne une fenêtre celle-ci garde le ratio 3/4.
ci-dessous l'extrait de code qui devrait selon moi faire le job (toute ressemblance avec des morceaux de tuto n'est pas fortuite ;D )...

while (ecran_Armee.isOpen()) //ecran_Armee est une window
    {
        // on traite tous les évènements de la fenêtre qui ont été générés depuis la dernière itération de la boucle
        sf::Event event;
        while (ecran_Armee.pollEvent(event))
        {

            // resize en respectant le ratio 3/4
            if (event.type == sf::Event::Resized)
            {
                    // récupération de la taille de la fenêtre
                    sf::Vector2u size = ecran_Armee.getSize();

                    float ratio(0.75);
                    size.y=(unsigned int) ratio*size.x;
                    ecran_Armee.setSize(size);
            }
        }

        // effacement de la fenêtre en noir
        ecran_Armee.clear(sf::Color::Black);

        // c'est ici qu'on dessine tout
        ecran_Armee.draw(S_ville_armee); //S_ville_armee est un sprite

        // fin de la frame courante, affichage de tout ce qu'on a dessiné
        ecran_Armee.display();
    }
 

... ca compile correct sauf que lorsque je redimensionne, y passe à 0 (comme si on avait passé size.y à 0 et non pas au 3/4 de size.x  ???
Ou ai-je bien pu pêcher dans mon raisonnement ?

Rick.

15
Général / Installation SFML avec code::block [résolu]
« le: Juillet 30, 2018, 10:38:21 pm »
Bonjour la communauté,

En lisant le tuto d'installation, j'ai du mal à comprendre la phrase :

(...) Il est important de lier les bibliothèques qui correspondent à la configuration : "sfml-xxx-d" pour Debug, et "sfml-xxx" pour Release. Un mauvais mélange pourrait produire des crashs. (...)

Est-ce à dire que si je veux par ex. le module "system", je place sfml-system dans Release ET je place sfml-system-d dans Debug ? ???

Rick.

Pages: [1]
anything