Membres inscrits :668
Membres en ligne : 0
Invités en ligne : 6


|
| Conversation : Compilation Code::Block + wxWidgets |
kiklick (Nouveau membre)
Inscrit le : 09-03-2009
Messages: 1
Snippets: 0
Tutoriels: 0
Hors ligne |
Bonsoir/Bonjour, Je suis sous WinXP et je souhaiterais m'essayer à la programmation C++ avec les WxWidgets. J'ai installé Code::Blocks 8.02 avec mingw et les WxWidgets 2.8.9 J'ai téléchargé les exemples/demos fournie sur http://www.wxwidgets.org/downloads/demos.htm ..mais pour chacun des exemples j'obtiens énormément d'erreur à la compilation.
C:\CPP-Dev\wxWidgets-DialogsDemo-Windows\dialogs.cpp|18|wx/wxprec.h: No such file or directory| C:\CPP-Dev\wxWidgets-DialogsDemo-Windows\dialogs.cpp|25|wx/wx.h: No such file or directory| C:\CPP-Dev\wxWidgets-DialogsDemo-Windows\dialogs.cpp|28|../sample.xpm: No such file or directory| ...
Merci pour votre aide, ou si vous pouvez m'indiquer un bon tuto.
| |
|
volfoni54 (Membre)
Lieu: Volfoni
Inscrit le : 14-09-2008
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne |
Je ne sais pas comment sont les exemples, mais je ne pense pas qu'ils prennent em compte qu'ils sont des projets wxWidgets. Le plus simple serait de suivre un tutorial sur l'utilisation de wxWidget sous Code::Blocks.
Volofni54
| |
|
Gamal le Celte (Membre)
Lieu: Nancy
Inscrit le : 28-10-2008
Messages: 10
Snippets: 0
Tutoriels: 1
Hors ligne |
En cherchant sur ce forum tu trouveras : - des explications, - un super tuto - et un outil pour installer wxWidget.
En cherchant encore tu trouveras aussi, dans des discutuions, des trucs pour parametrer tout ca.
Moi qui ne suis pas C++ pour deux rond, j'ai testé et ca marche.
|
_____________________________________
Gamal Python / Boa / wx.Python
|
vdm (Nouveau membre)
Inscrit le : 17-05-2010
Messages: 9
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Bonjour,
Merci d'avoir signalé l'existence de l'outil d'installation qui était sous nos yeux, je ne l'avais pas vu dans la colonne de gauche... Le tuto est très bien, mais il y a des cas où l'on veut compiler soi même (pour comprendre comment ça marche, et comment ça marchera demain).
Voici l'exposé de mon propre problème de compilation de wxWidgets avec Code::Blocs et MinGW : Le compilateur ne trouve pas le fichier gdiplus.h, malgré le fait que je demande de ne pas l'utiliser (USE_GDIPLUS= 0: pour l’utilisation des wxGraphicsContext ne marche pas avec MinGW). 1) Code::Blocs 8.02 et de MSYS (UNIX-like de MinGW) 2) je suis le tuto : installation de wxWidgets-2.8.11 3) modification de WXDIR\include\wx\msw\setup.h avec : #define wxUSE_UNICODE 1 #define wxUSE_GLCANVAS 1 #define wxUSE_GRAPHICS_CONTEXT 0 #define wxUSE_ODBC 1 4) modification de WXDIR\build\msw\config.gcc avec : USE_GDIPLUS=0 5) Dans une fenêtre MSYS ou ligne de commande : cd WXDIR/build/msw mingw32-make.exe –f makefile.gcc BUILD=release MONOLITHIC=0 UNICODE=1 SHARED=0 USE_OPENGL=1 USE_ODBC=1 USE_QA=1 USE_GDIPLUS=0 => Compile correctement plusieurs bibliothèques, puis donne : g++ -c -o gcc_mswu\corelib_graphics.o [...] ../../src/msw/graphics.cpp ../../src/msw/graphics.cpp:92:21: gdiplus.h: No such file or directory Suivi de beaucoup d'erreurs...
J'ai trouvé un stock de fichiers gdiplusxxx.h sur Internet (koders.com), mais ce n'est certainement pas ce qu'il faut faire compte tenu des multiples erreurs de compilation que j'obtiens derrière.
Après toute cette description - merci de m'avoir suivi jusque là ;-) - comment faire pour désactiver effectivement GDIPLUS et compiler sans erreur ? Ou comment récupérer les gdiplusxxx.h tout beaux qui iront bien ?
Remarque, j'ai tenté de compiler la version stable précédente et la dernière version wxWidgets, et là, la compil ne se lançait même pas... Bouuuu.
Merci pour votre aide.
Vincent
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
As-tu essayé sans mettre la directive "USE_GDIPLUS=0" dans la ligne de commande ? De plus, si tu utilises une fenêtre MSYS, il ne faut pas utiliser la commande "mingw32-make.exe", mais plutôt "configure" avec les options qui vont bien, suivi de "make" tout court.
Le processus de compilation avec MSYS n'est pas du tout le même qu'avec mingw32-make.exe
Pour ma part, lors de la création de l'installateur (et surtout des "paquets" qu'il installe), j'utilise mingw dans une fenêtre ms-dos classique, avec par exemple la ligne de commande suivante :
Code:mingw32-make.exe -f makefile.gcc BUILD=release UNICODE=1 MONOLITHIC=0 SHARED=1 USE_OPENGL=1 USE_ODBC=1 USE_QA=1
Petit conseil en passant : tu devrais utiliser une version plus récente de Code::Blocks, qui a beaucoup évolué depuis la version 8.02. Tu en trouveras une version complète (et en français) dans la partie "Téléchargements" de ce site.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
freem (Membre)
Inscrit le : 09-04-2010
Messages: 11
Snippets: 0
Tutoriels: 0
Hors ligne |
Si je peux me permettre, mingw32 à également évolué depuis. L'installation à la main est plutôt ardu mais quelqu'un à créé un installateur: http://www.tdragon.net/recentgcc/
Note: Il vaut mieux prendre celui qui pèse 26 Mo, chez moi l'autre ne trouve pas l'un des paquets.
| |
|
vdm (Nouveau membre)
Inscrit le : 17-05-2010
Messages: 9
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Merci pour vos réponses et précieux conseils. - J'utilise USE_GDIPLUS=0 - J'ai oublié de dire que la compilation en mode debug fonctionne parfaitement, le problème n'est qu'en mode release - J'ai installé le MS SDK 6.1 qui contient les headers gdiplus officielles, mais la compilation de graphics.cpp finit quand même par déconner (des erreurs dans les headers gdiplus). - J'ai mis à jour mingw32 comme recommandé depuis tdragon.net - La dernière version stable de Code::Blocs est bien la 8.02 que j'utilise, elle date effectivement un peu. Je vais tâcher d'installer le night build correctement, mais je ne l'utilise à priori pas pour compiler wxWidgets ?! - Si j'utilise la ligne de commande plutôt que MSYS, j'ai une erreur immédiate que je vous livre avec la ligne de commande :
Code:D:\Developpement\wxWidgets-2.8.11\build\msw>mingw32-make.exe -f makefile.gcc BUILD=release UNICODE=1 MONOLITHIC=0 SHARED=1 USE_OPENGL=1 USE_ODBC=1 USE_QA=1 USE_GDIPLUS=0 if exist ..\..\lib\gcc_dll\libwxregexu.a del ..\..\lib\gcc_dll\libwxregexu.a process_begin: CreateProcess(NULL, -c "if exist ..\..\lib\gcc_dll\libwxregexu.a del ..\..\lib\gcc_dll\libwxregexu.a", ...) failed. make (e=2): Le fichier spÚcifiÚ est introuvable. mingw32-make.exe: *** [..\..\lib\gcc_dll\libwxregexu.a] Error 2 Merci pour votre aide.
V°°
Dernière modification par vdm (19-05-2010 15:17:08)
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Salut.
vdm a écrit:J'utilise USE_GDIPLUS=0 Justement : essaye sans ce paramètre
vdm a écrit:- J'ai oublié de dire que la compilation en mode debug fonctionne parfaitement, le problème n'est qu'en mode release Là, c'est encore plus bizarre 
vdm a écrit:- J'ai installé le MS SDK 6.1 qui contient les headers gdiplus officielles, mais la compilation de graphics.cpp finit quand même par déconner (des erreurs dans les headers gdiplus). Heu... ce SDK concerne Visual C++, non ? Il n'a donc rien à voir avec MinGW / Gcc
vdm a écrit:- J'ai mis à jour mingw32 comme recommandé depuis tdragon.net Je doute fort que le problème vienne de là : j'utilise la version "classique" obtenue depuis mingw.org sans problèmes.
vdm a écrit:- La dernière version stable de Code::Blocs est bien la 8.02 que j'utilise, elle date effectivement un peu. Je vais tâcher d'installer le night build correctement, mais je ne l'utilise à priori pas pour compiler wxWidgets ?! Tu as raison : Code::Blocks n'est pas utilisé pour compiler wxWidgets. Par contre, tu as peut être installé une version obsolète de MinGW en même temps que Code::Blocks.
vdm a écrit:- Si j'utilise la ligne de commande plutôt que MSYS, j'ai une erreur immédiate que je vous livre avec la ligne de commande :
Code:D:\Developpement\wxWidgets-2.8.11\build\msw>mingw32-make.exe -f makefile.gcc BUILD=release UNICODE=1 MONOLITHIC=0 SHARED=1 USE_OPENGL=1 USE_ODBC=1 USE_QA=1 USE_GDIPLUS=0 if exist ..\..\lib\gcc_dll\libwxregexu.a del ..\..\lib\gcc_dll\libwxregexu.a process_begin: CreateProcess(NULL, -c "if exist ..\..\lib\gcc_dll\libwxregexu.a del ..\..\lib\gcc_dll\libwxregexu.a", ...) failed. make (e=2): Le fichier spÚcifiÚ est introuvable. mingw32-make.exe: *** [..\..\lib\gcc_dll\libwxregexu.a] Error 2 Voici ce que je te conseilles de faire :
- Désinstalle ta version de Code::Blocks ainsi que MinGW / MSYS - Installe MinGW depuis le site officiel (l'installateur se trouve à cette adresse. - Assure-toi que l'installation s'est bien déroulée : pour cela, ouvre une fenêtre Ms-Dos, et teste simplement quelques commandes :
Code:mingw32-make.exe --version gcc --version ld --version - Si tu obtiens une erreur avec l'une des commandes ci-dessus, c'est qu'il faut modifier la variable système PATH afin d'y ajouter le répertoire "bin" de MinGW (si tu as besoin de plus d'infos là dessus, n'hésites pas) - Installes ensuite une Nightly-Build de Code::Blocks - Au premier lancement, il devrait détecter MinGW que tu pourras valider comme compilateur par défaut - Fait déjà un essai (application Win32) pour voir si tout compile correctement - Re-télécharge les sources wxWidgets (prend la version wxALL, c'est plus sûr) - Ouvre une fenêtre Ms-Dos, et sans rien toucher au fichier "setup.h", place-toi dans le dossier "build\msw", et lance ta commande de compilation sans les 4 derniers paramètres ( USE_OPENGL=1 USE_ODBC=1 USE_QA=1 USE_GDIPLUS=0 ) pour voir ce que ça donne. - Si ça foire, reviens nous le dire - Si ça marche, reviens nous le dire également, et tente en modifiant le "setup.h" et en mettant tous les paramètres dans la ligne de commande.
Bonne chance, et @+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
vdm (Nouveau membre)
Inscrit le : 17-05-2010
Messages: 9
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Merci Xaviou pour la longue réponse.
J'édte à nouveau mon message pour apporter des corrections. Voici là où j'en suis aujourd'hui : bilan mitigé avec la compilation qui se fait correctement dans les cas suivants -BUILD=debug SHARED=0 -BUILD=debug SHARED=1 -BUILD=release SHARED=0 Mais toujours une erreur quand j'utilise la combinaison de paramètres sur laquelle je m'étais fixé au départ "BUILD=release SHARED=1", lors d'exécution de
Code:g++ -c -o gcc_mswudll\coredll_graphics.o Donc en résumé, seule la compilation des DLL release ne fonctionne pas.
Voici la liste des choses qui ont été faites :
1) Mise à jour de MinGW-5.1.6 depuis le site officiel 2) Télélechargé le MS SDK 6.1 qui contient les headers gdiplus (la compilation déconnais car elle me disait que gdiplus.h manquait) que j'ai placé dans le répertoire WXDID/include 3) Desinstallé et ré-installé MSYS 4) Desinstallé C::B 8.02 et installé la Nightly-Build 6088 5) ... Couché très tard une troisième nuit consécutive 
Ce que je n'ai pas changé : 1) Je continue à travailler sous MSYS, avec la même ligne de commande que tu utilises sous l'invite de cmd Windows :
Code:/d/developpement/wxWidgets-2.8.11/build/msw $mingw32-make.exe -f makefile.gcc BUILD=release UNICODE=1 MONOLITHIC=0 SHARED=1 VENDOR=vdm USE_OPENGL=1 USE_ODBC=1 USE_QA=1 USE_GDIPLUS=0 et je fais varier BUILD et SHARED.
J'ai dit dans un post précédent que la compilation depuis la fenêtre de cmd Windows s'arrêtait tout de suite, avec visiblement une erreur avec make.l'erreur étant
Code:make (e=2): Le fichier spÚcifiÚ est introuvable. Si je fais:
Code:make --version MAKE Version 5.2 Copyright (c) 1987, 1998 Inprise Corp. Incorrect command line argument: --version Ce qui explique pourquoi le lancement de la compilation ne fonctionne pas dans ce cas, C'est "simplement" le mauvais make qui est appelé (j'ai Delphi installé). C'est déjà une partie du mystère qui s'éclaircit. J'ai modifié la variable système path, en ajoutant le chemin MSYSDIR\bin AVANT le chemin Delphi. Depuis, j'ai
Code:C:\>make --version GNU Make 3.81 C'est le bon make qui est appelé. J'ai re-testé la compilation, mais j'ai la même erreur que précédemment.
Deux questions subsidiaires : 1) j'ai tenté de télécharger les libs 2.8.11 avec l'Installateur de libs 2.8.11 trouvé dans la page téléchargement. Quand je clic sur "Démarrer" le téléchargement des libs, je vois affiché "Téléchargement du paquet "wx2811-sources-headers-Aide-Exemples" avec un débit de l'ordre de 500Ko/s qui s'affiche et la barre de progression qui bouge. Et c'est sans fin (laissé tourner 2h). L'encart Etat des téléchargements reste vierge. J'ai trouvé dans l'un de mes répertoires un fichier appelé wx2811-Sources-Headers-Aide-Exemples.pck qui ne cesse de passer en boucle de 0 à 14Mo environ...
2) Quand on compile avec SHARED=1, le répertoire WXDIR\lib\gcc_dll contient à la fois des .a et des .dll. Pourquoi y a-t-il des .a, peut-on les utiliser ?
Merci encore. V°° ---------- J'ai installé MinGW-5.1.6 et curieusement le numéro de version de gcc semble plus ancien que celui que j'avais avant:
Code:C:\>mingw32-make.exe --version GNU Make 3.81 Copyright (C) 2006 Free Software Foundation, Inc. C:\>gcc --version gcc (GCC) 3.4.5 (mingw-vista special r3) Copyright (C) 2004 Free Software Foundation, Inc. C:\>ld --version GNU ld (GNU Binutils) 2.20 Et j'ai cru comprendre que la dernière version est gcc-4.5.0-1 ??? ----------
Bye V°° ---------- -------------------------------------------------- Essai de compilation avec Visual C++ 2005 Express. --------------------------------------------------
J'ai suivi scrupuleusement la procédure décrite dans le tutoriel de Xaviou. Ca plante immédiatement,
Code:D:\Developpement\wxWidgets-2.8.11\build\msw>nmake.exe -f makefile.vc BUILD=debug MONOLITHIC=0 UNICODE=1 SHARED=0 USE_OPENGL=1 USE_ODBC=1 USE_QA=1 USE_GDIPLUS=1 Microsoft (R) Program Maintenance Utility Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. cl /c /nologo /TC /Fovc_mswud\wxregex_regcomp.obj /MDd /DWIN32 /Zi /Fd..\..\lib\vc_lib\wxregexud.pdb /D_DEBUG /Od /I..\..\include /I..\..\lib\vc_lib\mswud /D__WXMSW__ /D_UNICODE ..\..\src\regex\regcomp.c NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\Bin\cl.EXE"' : return code '0xc0000135' Stop. Maintenant, si je lance la solution wx.dsw et que je génère la solution, j'ai également une erreur, plus explicite :
Code:------ Début de la génération : Projet : xrc, Configuration : Unicode Release Win32 ------ Compilation en cours... dummy.cpp ..\..\include\wx/msw/wrapwin.h(51) : fatal error C1083: Impossible d'ouvrir le fichier include : 'windows.h' : No such file or directory Remarque : le fichier windows.h est bien inclu dans le fichier wrapwin.h, qui est lui même inclu dans la plupart des librairies (mais pas toutes, certaines compilent individuellement). Le problème est que le fameux windows.h est inexistant dans l'arborescence wxWidgets .
Mais pourquoi ça marche pas chez moi comme chez tout le monde ?
V°°
Dernière modification par vdm (20-05-2010 22:31:30)
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Pour VS2005, il ne faut pas passer par une fenêtre Ms-Dos classique, mais aller la chercher dans les entrées du menu démarrer créé lors de l'installation (de ce fait, il va automatiquement définir les chemins pour les fichiers include et autres).
En ce qui concerne "windows.h", ce n'est pas un fichier wxWidgets, mais il fait partie des headers "basiques" à utiliser lorsque l'on fait une application Windows. Visual C++ possède le sien, et MinGW également.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
vdm (Nouveau membre)
Inscrit le : 17-05-2010
Messages: 9
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Bonsoir,
J'ai bien utilisé le lien dans le menu démarrer. Ja'azi aussi un windows.h dans mingwDIR/include, mais pas dans VisualC++/include ni dans le SDK MS. Peux-tu éventuellement me l'envoyer ?
Merci V°°
| |
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1191
Snippets: 23
Tutoriels: 6
Site web
Hors ligne |
Si tu as installé le SDK Ms, il y est forcément. Il y a un répertoire spécifique pour le SDK dans "Program Files" (qui n'est pas le sous-dossier "SDK" de Visual Studio) Chez moi, Windows.h se trouve dans C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà...
|
vdm (Nouveau membre)
Inscrit le : 17-05-2010
Messages: 9
Snippets: 0
Tutoriels: 0
Site web
Hors ligne |
Oh, ouiiii ! C'était simple, mais je cherchais ailleurs... Merci pour cette bonne info !
Bye. V°°
| |
|
|