IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxWidgets Discussion :

wxWidgets-2.8.6 avec mingw et msys


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut wxWidgets-2.8.6 avec mingw et msys
    Bonjour,
    Tout d'abord je voudrais remercier à l'équipe qui à mis en place ce forum. Cela permet de apprendre à developper plus facilement.

    Je debute avec la bibliotheque wxWidgets, et j'ai pris la décision de developper avec mingw et l'interface msys. Tout cela par soucis purement didactique (pour apprendre).

    J'ai telechargé l'installeur pour windows de wxWidgets-2.8.6, msys et mingw sur le site de sourceforge:
    Automated MINGW installer : MinGW-5.1.3.exe
    MSYS : MSYS-1.0.10
    wxWidgets : wxMSW-2.8.6-Setup.exe

    J'ai installé avec les options par defaut d'abord MinGW, ensuite MSYS qui m'a demande le repertoire ou MinGW était installé, et finalement wxWidgets:
    chose bizarre: l'installeur n'a pas crée la variable $WXWIN dans mon systeme.
    à la fin de l'installation j'ai les repertoires suivants:
    C:\MSYS
    C:\MinGW
    C:\wxWidgets-2.8.6

    Ensuite j'ai compilé la bibliotheque wxWidgets avec .\configure, make, install, sans me preocuper des options de compilation, parce que je ne maitrise pas tout cela.

    Me voici pret à tester la bibliotheque avec un programme que j'ai obtenu sur le site the wxwidgets codeblock
    Le fichier header :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    #ifndef BASIC_H
    #define BASIC_H
     
    #include <wx/wx.h>
     
    class BasicApplication : public wxApp
    {
    public:
    virtual bool OnInit();
    };
     
    class BasicFrame : public wxFrame
    {
    public:
    BasicFrame(const wxChar *titile, int xpos, int ypos, int width, int height);
    ~BasicFrame();
    };
     
    #endif
    Le fichier cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    #include "basic.h"
     
    using namespace std;
     
    IMPLEMENT_APP(BasicApplication)
     
    bool BasicApplication::OnInit()
    {
    BasicFrame *frame = new BasicFrame("Basic", 50, 50, 450, 300);
    frame->Show(TRUE);
    SetTopWindow(frame);
    return TRUE;
    }
     
    BasicFrame::BasicFrame(const wxChar *title, int xpos, int ypos, int width, int height): 
    wxFrame((wxFrame *)NULL, -1, title, wxPoint(xpos, ypos), wxSize(width, height))
    {
    }
     
    BasicFrame::~BasicFrame()
    {
    }
    J'ai rajouté quelques variables d'environnement dans: demarrer->poste de travail ->click droit->proprietes->avance->variables d'env...:

    PATH: ... C:\wxWidgets-2.8.6
    WXWIN: C:\wxWidgets-2.8.6

    quand je tape $PATH dans la fenetre MSYS j'obtiens :

    sh: .:/usr/local/bin:/mingw/bin:/bin:/c/WINDOWS/system32:/c/WINDOWS:/c/WINDOWS/system32/WBEM:/c/Program : No such file or directory.

    Bon je pense que ça marche quand même car quan je tape wx-config --libs j'obtiens:

    -L/c/wxWidgets-2.8.6/lib -mthreads -Wl,--subsystem,windows -mwindows -lwx_msw_aui-2.8 -lwx_msw_xrc-2.8 -lwx_msw_qa-2.8 -lwx_msw_html-2.8 -lwx_msw_adv-2.8 -lwx_msw_core-2.8 -lwx_base_xml-2.8 _lwx_base_net-2.8 -lwx_base-2.8

    et pour wx-config --cxxflags:

    -I/c/wxWidgets-2.8.6/lib/wx/include/msw-ansi-release-2.8 -I/c/xwWidgets-2.8.6/include -I/c/wxWidgets-2.8.6/contrib/include -DWXUSINGDLL -D_WXMSW__ -mthreads


    Ensuite sans creer un Makefile j'essaye de compiler le programme comme suit:
    g++ -c basic.cpp -o basic.o -I"C:/wxWidgets-2.8.6/include" -I"C:/wxWidgets-2.8.6/lib/wx/include/msw-ansi-release-2.8" -L"C:/wxWidgets-2.8.6/lib"


    PAS DES MESSAGES D'ERREUR

    mais quand je passe a:

    g++ basic.cpp -o basic.exe -I"C:/wxWidgets-2.8.6/include" -I"C:/wxWidgets-2.8.6/lib/wx/include/msw-ansi-release-2.8" -L"C:/wxWidgets-2.8.6/lib"

    j'obtiens le message pleins de messages d'erreur: similaires à:
    C:/DOCUME~1/MYNAME/LOCALS~1/Temp/cc6jaaaa.o:basic.cpp (.text+0x14c ): undefine reference to "wxAppConsole::CheckBuildOptions(char const*, char const*)'
    .....
    ....


    Merci de vos commentaires et pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 25
    Par défaut
    Dans msys,

    pour la compilation, il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -c basic.cpp -o basic.o `wx-config --cflags`
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ basic.o -o basic.exe `wx-config --libs`
    Là, ça devrait fonctionner.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut
    Merci pour ta réponse Just Modeste,

    quand j'écris :

    g++ -c basic.cpp -o basic.o `wx-config --cflags`

    J'obtiens les erreurs suivants:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    basic.h:8:19: wx/wx.h: No such file or directory
    In file included from basic.cpp:5:
    basic.h:12: error: expected class-name before '{' token
    basic.h:18: error: expected class-name before '{' token
    basic.h:20: error: expected `,' or `...' before '*' token
    basic.h:20: error: ISO C++ forbids declaration of `wxChar' with no type
    basic.cpp:11: error: expected constructor, destructor, or type conversion before                                                                              "bool"
    basic.cpp:11: error: expected `,' or `;' before "bool"
    basic.cpp:19: error: expected `,' or `...' before '*' token
    basic.cpp:19: error: ISO C++ forbids declaration of `wxChar' with no type
    basic.cpp: In constructor `BasicFrame::BasicFrame(int)':
    basic.cpp:20: error: class `BasicFrame' does not have any field named `wxFrame'
    basic.cpp:20: error: `wxFrame' undeclared (first use this function)
    basic.cpp:20: error: (Each undeclared identifier is reported only once for each                                                                              function it appears in.)
    basic.cpp:20: error: expected primary-expression before ')' token
    basic.cpp:20: error: `title' undeclared (first use this function)
    basic.cpp:20: error: `xpos' undeclared (first use this function)
    basic.cpp:20: error: `ypos' undeclared (first use this function)
    basic.cpp:20: error: `wxPoint' undeclared (first use this function)
    basic.cpp:20: error: `width' undeclared (first use this function)
    basic.cpp:20: error: `height' undeclared (first use this function)
    basic.cpp:20: error: `wxSize' undeclared (first use this function)
    Dans un premier temps j'avais deja essayé de proceder de cette façon mais on dirait qu'il ne réalise pas correctement les liens, c'est pour cela que j'essayé de le faire un par un comme dans le message precedent.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2002
    Messages : 25
    Par défaut
    Je pense que le problème viens des apostrophes...

    il faut utiliser les apostrophes inversée (` : [AltGR]+7 sur un clavier français)
    et non les apostrophes (' : [4])

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -c basic.cpp -o basic.o `wx-config --cflags`
    et non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g++ -c basic.cpp -o basic.o 'wx-config --cflags'
    En espèrant avoir réglé le problème...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 64
    Par défaut Merci beacoup
    C'est réussi:

    Effectivement c'etait un problème de syntaxe, je te remercie pour ton aide, c'est sympa!!
    Pour ceux que liraient à posteriori cette conversation, aprés correction de la syntaxe j'ai eu une erreur en me demandant une dll, j'ai tout simplement ajoute dans les variables d'environnement C:\wxWidgets-2.8.6\lib

    Voilà merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compilation de xml2 avec mingw et msys
    Par qdaemon_fr dans le forum C
    Réponses: 1
    Dernier message: 12/04/2011, 14h28
  2. erreur de link sous wxWidgets avec Mingw
    Par pyoda dans le forum wxWidgets
    Réponses: 4
    Dernier message: 28/04/2006, 19h03
  3. PB installation de WXWIDGETS AVEC MINGW
    Par lhomme dans le forum wxWidgets
    Réponses: 1
    Dernier message: 27/12/2005, 11h22
  4. Pb de type avec Mingw
    Par titus55 dans le forum C++
    Réponses: 4
    Dernier message: 06/10/2005, 12h59
  5. Opérateur not ? Bug avec MinGW 3.4 ? ou mot clé ?
    Par Groove dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 31/01/2005, 18h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo