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

Code::Blocks Discussion :

code::blocks et wxWidget 2.8


Sujet :

Code::Blocks

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut code::blocks et wxWidget 2.8
    Bonjour,

    Ca fait donc à peu près deux semaines que j'essaye d'installer wxWidget 2.8 sous code::blocks. J'ai essayé moult solutions, qui n'ont pas abouties.

    A l'heure actuelle j'ai l'erreur suivante cannot find -lwxmsw. Je ne comprend pas bien les erreurs de link en règle général et celle ci ne fait pas exception.

    Pour en arriver là, j'ai téléchargé et compilé en release la lib wxWidget 2.8 puis sous code::blocks, j'ai mis dans settings->compiler->directories les dossiers include et lib de wxWidget. Enfin j'ai ajouté les lib dans les options linker. J'ai créé un projet en wxwidget et je l'ai compilé, le compilateur me dit alors "cannot find -lwxmsw".

    Voila, je sais pas trop si vous comprenez bien ce que j'ai fait et je suis clair. En fait, si vous connaissez un lien vers un site qui explique comment installer la lib wxWidget 2.8 sous code::blocks de A à Z ne vous fatiguez pas à comprendre mon problème... donnez moi le lien

    Mais bon, j'ai eu beau chercher... j'ai peut-être mal chercher, mais j'ai rien trouvé... dsl

    Si qq1 a une idée pour mon problème je lui en serais très reconnaissant. Je pense que le vrai problème c'est que je ne connais pas grand chose sur la signification de la ligne de commande de la compilation (gcc -o main.cpp etc etc...). Je suis preneur pour un tutoriel compilateurs.

    Bon, je parle trop ... Merci à ceux qui veulent bien m'aider.

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    Bien le bonjour,

    Il faut que tu ailles voir le nom de la bibliothèque statique correspondant à la version de wxwidgets que tu as installée.

    -lwxmsw signifie que le compilo ira chercher un fichier nommé libwxmsw.a. Regarde si ce fichier existe bien et s'il a bien ce nom là. Renomme-le ou change l'option d'édition de liens en conséquence.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Merci beaucoup pour cette réponse.

    Alors le gros problème c'est que pour créer mon projet j'ai pris le template wxWidget de code::blocks qui ne marche que si wxWidget est installé sous c:\wxWidget, ce n'est pas mon cas.

    J'aurais donc aimé savoir si il n'y a pas un moyen de changer ce répertoire dans les options du compilateur, j'ai cherché mais rien trouvé. De plus, le problème est que j'ai la version 2.8 de wxWidget, la libwxmsw s'appelle libwxmsw28 (pour la version 2.8). Dans Duild->Compiler Settings->other options, il y avait écrit -libwxmsw je l'ai remplacé par -libwxmsw... ça n'a rien changé...

    je vous montre le log :

    Project : wxWidgets application
    Compiler : GNU GCC Compiler (called directly)
    Directory : D:\Mes documents\Guillaume\Dev\Widget\
    --------------------------------------------------------------------------------
    Switching to target: default
    Linking executable: D:\Mes documents\Guillaume\Dev\Widget\wxWidgets.exe
    C:\Program Files\CodeBlocks\bin\..\lib\gcc\mingw32\3.4.4\..\..\..\..\mingw32\bin\ld.exe: cannot find -lwxmsw
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 0 seconds)
    1 errors, 0 warnings

    voila, je vais peut-etre essayer de réinstaller la lib correctement, je suis pas sûr d'avoir pris les bonnes options lors de l'install

    Si toutefois tu as le temps de m'expliquer comment je peux, à partir de l'nstalleur code::blocks et wxWidget, créer un projet compilable, ce serait génial... bien sûr, on a pas tous que ça à faire .

    En tout cas, merci pour ta réponse...

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    ben si ta librairie s'appel libwxmsw28.a il faut que tu link (-l) avec ce nom là c'est à dire:
    -llibwxmsw28.a ou -lwxmsw28
    mais c'est bizard, moi quand je compile wx j'ai plusieurs lib qui commencent leur nom en libwxmsw28_***.a et pas seulement libwxmsw28.a . Tu as compilé en statique?
    si c'est le cas pour compiler le projet le plus basic tu as besoin de 3 libs (hormis celles de la win32):
    libwxmsw28_core.a -> -lwxmsw28_core
    libwxbase.a -> -lwxbase
    libwxmsw28_adv.a -> -lwxmsw28_adv

    je met un .zip avec la mise en place d'un projet minimaliste...
    Fichiers attachés Fichiers attachés

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Merci beaucoup pour tes indications...

    Cependant je suis navré, mais ça compile toujours pas... surtout que je n'ai pas les mêmes lib que toi. moi j'ai les lib suivantes :

    - libwxexpat.a
    - libwxjpeg.a
    - libwxmsw28u.a
    - libwxpng.a
    - libwxregexu.a
    - libwxtiff.a
    - libwxzlib.a

    Sans compter la DLL : wxmsw28u_gcc_custom.dll

    toutes situées dans C:\CodeBlocks\wxWidgets-2.8.0\lib\gcc_dll. Après compilation. Pour info, la ligne de commande que j'ai faite pour compiler la librairie est la suivante :

    mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release

    C'était peut-être pas ça... ensuite j'ai ouvert ton projet minimaliste sous Code::Blocks et il n'a pas voulu compilé (pas cool). Il m'a marqué cannot find -lwxmsw28_core Logique puisque la lib n'est pas la bonne.

    J'ai donc mis les dossiers include et lib nécessaires et les lib ainsi que les -lwxetc... et il me marque maintenant :

    Linking executable: D:\Mes documents\Guillaume\Dev\Proj_Widget\Win32GUI.exe
    Info: resolving wxAppConsole::ms_appInstance by linking to __imp___ZN12wxAppConsole14ms_appInstanceE (auto-import)
    Info: resolving wxStringBase::npos by linking to __imp___ZN12wxStringBase4nposE (auto-import)
    Info

    Donc voila, je comprend pas encore bien tout ça... Si vous avez une idée...

    Pour information, j'ai quand même réussi à créer un projet wxWidget v2.6.3 sur DevCpp avec le dev packs et ça marche bien... mais bon, j'étais parti sur wxWidget v2.8 et puis surtout, j'apprend des choses qui pourront m'être utiles à l'avenir dans l'installation d'autres bibliothèques, si vous êtes toujours OK pour m'aider , je suis donc toujours preneur

    A bientot et merci beaucoup pour vos conseils.
    J'ai encore la foi, j'y arriverai... aujourd'hui ou dans trois ans

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Rectification du mail précédent... En fait, les options de compilation de la bibliothèque n'était pas vraiment les bons.

    J'ai recompilé la lib en Release avec un mingw32-make -f makefile.gcc BUILD=release et du coup j'ai les bonnes lib...

    Il compile presque, une petite erreur subsiste :

    Linking executable: bin\testwx.exe
    C:\CodeBlocks\lib/libmingw32.a(main.o):main.c.text+0x106): undefined reference to `WinMain@16'

    Je ne sais pas à quoi c'est dû, je cherche encore... j'y arriverai...

    A bientot

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    compil avec SHARED=0 pour tester en static...
    et aussi n'oublis pas de mettre le setup.h se trouvant dans le dossier de lib apres compilation dans le dossier wx

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut
    Bonjour,

    Encore une fois merci... et encore une fois, désolé, ça ne marche pas...

    j'aimerais bien savoir comment tu as fait dans ton projet pour inclure la commande -lwxmsw28 car je ne l'ai pas trouvé ni dans le menu Build->Compiler Options, ni dans Settings->Compiler.

    On dirait que c'est tout ce qu'il me manque pour compiler.

    Sinon, moi je crée un projet Win32GUI et après dans les Compiler options je mets les path et les libs nécessaires. J'ai pensé aussi à créer un projet Widget plutot que Win32GUI. Mais celui-ci ne marche qu'avec la version 2.6.3 de wxWidget et si il est bien situé dans le bon répertoire.

    Donc voila, j'aimerais bien savoir comment toi tu inclues la driective -lwxmsw28 pour que je la change en -lwxmsw28d et que ça compile, ce serait chouette.

    Merci encore, j'espère que tu n'as pas l'impression de perdre ton temps... et désolé de pas mieux comprendre toutes ces choses

    A bientot j'espère... Je tiens bon

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    ne t'inquietes pas c'est simple...:
    tu vas dans "Project" à coté de Build puis tu fais:
    Project -> Build Options puis tu as une fenetre "Project build options" qui s'ouvre et là dedans tu vas spécifier tout les options de compilation (chemin vers les includes, vers les lib, les libs avec lesquels compiler etc...)
    Il faut savoir que tu peux creer plusieurs cibles de compilation, typiquement tu peux creer la cible "release" et la cible "debug", et dans ces cibles tu peux spécifier avec quelles libs tu vas compiler, il va de soit que si tu veux les information de debuggage il fautr que tu utilises les version libwx..d.a
    Personnelement je ne compile jamais en debug, surtout pour du developpement GUI.
    le prjoet que je t'ai envoyé a que la cible release de prete, sachant que dans celle ci je ne fais rien de particulier !!! c'est dans le cible principale testwx que je définis les chemin vers les include/lib (c:\wx280) et les librairies avec lesquelles linker (-lwx...)

    Dans Compiler settings il y a divers options de compilations (pas important pour le moment)

    Dans Linker settings je dis avec quelles librairies je souhaite compiler tu verras toute la famille de wxmsw28_.. et les librairies de l'API win32 qui sont necessaires à wxwidgets. (Attention !!!! l'ordre des librairies a une importance) si lib1 a besoin de lib2 qui a besoin de lib3 il faut les mettre dans l'ordre lib1 lib2 lib3. Tu remarqueras que je ne met pas le nom complet de la librairie (libwxmsw....a) mais juste wxmsw28.. car le compilateur mingw va automatiquement faire la completion avec lib et .a

    Dans Search Directories il y a les paths vers les includes et lib c'est là que tu vas voir c:\wx280

    le reste tu n'en n'as pas besoin....

    si tu as encore des problème tu peux me mp je te donnerai mon msn

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10
    Par défaut Pour ceux qui ont le même problème
    J'ai enfin réussi, je ferme donc le topic.

    L'intégralité des opérations à effectuer n'est effectivement pas bien compliquée, mais il faut être renseigné.

    Pour ceux qui partent de rien, commencez par télécharger la dernière version de code::blocks (avec Mingw) et la lib wxWidget 2.8 sur les sites officiels (suffit de taper ces noms dans google, on arrive tout de suite sur les sites officiels) et installez les.

    Vient ensuite la compilation de la lib wxWidget. pour cela, mettez le path du dossier bin de code::blocks dans les variables d'environnement utilisateurs

    nom de la variable : path
    valeur de la variable : "......\Code::Blocks\bin"

    ensuite, dans l'invite de commande ms-dos, placez vous dans le dossier de wxWidget contenant le makefile.gcc (c:\wxWidget-2.8.0\build\msw dans la plupart des cas) et tapez la commande suivante :

    mingw32-make -f makefile.gcc SHARED=0 BUILD=release. (j'ai pas bien compris le shared=0 mais vous verrez, ça marche )

    L'opération de compilation peut prendre quelques dizaine de minutes.

    Une fois l'opération terminée, vous devriez avoir dans c:\wxWidget-2.8.0\lib\gcc_lib une quinzaine de librairies entre autre libwxmsw28_core.a libwxmsw28_adv.a libwxbase28.a. Si ces librairies ne sont pas dans ce dossier, posez vous des questions -> certainement une erreur à la compilation.

    Ensuite téléchargez le petit exemple d'appli testwx.zip fourni plus haut par notre cher confrère reptils et ouvrez le fichier testwx.cbp qu'il contient.

    Sous C::B vous devez ensuite ouvrir dans menu>Project->Build Options onglet Directories changer les chemins d'include et lib pour qu'à la compilation, vous n'ayez pas d'erreurs de link. La dernière petite chose à faire qui m'a value une grosse prise de tête est d'aller dans menu>Project->Properties onglet targets, cocher les fichiers que vous voulez compiler à savoir le main.cpp (le seul fichier cpp du projet).

    voila, normalement, ca devrait compiler... Si c'est pas le cas, une seul réponse... Google !!!

    Pour la suite des opérations ya pleins de tutoriaux et exemples de code sur internet vous permettant assez facilement de compiler des applications graphiques bateaux, notamment sur le wiki wxWidget : http://fr.wikibooks.org/wiki/Interfa..._avec_wxWidget

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    410
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 410
    Par défaut
    le shared=0 c'est pour que la libn soit compilée en statique (.a) et pas en dynamique (dll)

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

Discussions similaires

  1. [WxWidgets] installation code:blocks
    Par maminova77 dans le forum Code::Blocks
    Réponses: 16
    Dernier message: 25/01/2011, 09h15
  2. Pb de compilation d'un projet wxWidgets sous Code::Blocks
    Par fild'air dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 07/01/2009, 22h49
  3. [WxWidgets] installation code:blocks erreur au make
    Par grabriel dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 17/04/2008, 18h10
  4. Utiliser les wxWidgets sous code::block
    Par cobra85 dans le forum Code::Blocks
    Réponses: 1
    Dernier message: 07/12/2007, 22h30
  5. Installer wxWidgets avec Code::Blocks
    Par Shugo78 dans le forum Code::Blocks
    Réponses: 3
    Dernier message: 25/06/2007, 10h36

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