Mais comment utiliser wxWidgets avec Code::Blocks et VC++ 7.1 toolkit ??!!!
zippro4012
Messages postés216Date d'inscriptionmardi 15 juin 2004StatutMembreDernière intervention26 février 2006
-
26 févr. 2006 à 16:03
cb31_fr
Messages postés1Date d'inscriptionmardi 21 septembre 2004StatutMembreDernière intervention28 septembre 2006
-
28 sept. 2006 à 15:27
Je programme en C++ dans l'éditeur Code::Blocks, et compile avec VC++ 7.1 toolkit.
Il est relativement ennuyeux d'utiliser les APIs Windows pour créer une interface graphique en C++ (du genre CreateWindow), et c'est pour cela que j'ai voulu adopter wxWidgets 2.6.2... mais 'voulu' seulement, car pour l'instant, la mise en pratique n'est pas réjouissante.
Première chose a faire, la compilation des librairies wxWidgets avec VC++7.1 toolkit et en utilisant le nmake.exe du Windows SDK. Cela ce passe plutot bien, mis a part les messages déplaisants du genre 'L'optimisation n'est pas disponible dans la version standard'. La compilation se termine sans erreur. Je me retrouve donc avec des librairies dynamiques...
Mais là survient le gros problème : l'utilisation de wxWidgets en elle même... Je crée donc un nouveau projet sous Code::Blocks, et remplit les fichiers de code par l'exemple 'Hello World' fournie dans la documentation de la librairie wxWidgets. La compilation se passe à merveille, mais le linkage quand a lui ne fonctionne pas du tout. Voila le début des erreurs :
.objs\main.o(.text+0x45):main.cpp: undefined reference to `_imp___ZN12wxAppConsole17CheckBuildOptionsEPKcS1_'
.objs\main.o(.text+0xf4):main.cpp: undefined reference to `_imp___Z7wxEntryP11HINSTANCE__S0_Pci'
.objs\main.o(.text+0x295):main.cpp: undefined reference to `_imp__wxFrameNameStr'
.objs\main.o(.text+0x2c1):main.cpp: undefined reference to `_imp__wxDefaultSize'
.objs\main.o(.text+0x2ca):main.cpp: undefined reference to `_imp__wxDefaultPosition'
.objs\main.o(.text+0x36b):main.cpp: undefined reference to `_imp___ZN9wxMenuBarC1Ev'
.objs\main.o(.text+0x8d8):main.cpp: undefined reference to `wxFrameBase::SetMenuBar(wxMenuBar*)'
Et j'en passe, il y a 52 erreurs en tout.
Tout de suite, je vait regarder la config du projets : mais non, ce n'est pas ca le problème, toutes les librairies wxWidgets sont bien incluses...
Alors comment se fait-il que le linker agit comme s'il ne trouvait pas les librairies ???
J'ai eu beau désactiver le header précompilé, rien a faire, le problème ne vient pas de là.
J'ai eu beau essayer de compiler avec GCC, le même problème survient.
Doit-je changer d'éditeur de code ? De compilateur ?
fredcl
Messages postés547Date d'inscriptionmercredi 8 janvier 2003StatutMembreDernière intervention 7 octobre 20071 26 févr. 2006 à 18:18
Bonjour,
Quand j'ai ce genre d'erreur avec Dev-Cpp (GCC) c'est quand j'ai oublier d'indiquer les bons chemins afin que le compilateur trouve les bibliothèques. C'est peut être une piste à vérifier?
BlueCat
Messages postés1Date d'inscriptionmardi 1 août 2006StatutMembreDernière intervention24 août 2006 24 août 2006 à 12:12
Bonjour
Et moi qui croyais être le seul à avoir ces désagréments (ben oui tout le monde nous dit "oh ! c'est facile d'installer wxWidgets sous Code::Blocks"... effectivement c'est facile mais personnellement je j'ai encore réussi à m'en servir une fois installé !)
J'ai installé les wxWidgets 2.6.3 que j'ai compilé avec GCC en UNICODE et DEBUG (jusque là ok).
J'ai créé un project wxWidget Application sous Code::Blocks, en passant par le wizard (eh oui le nighlty build 220806 m'a un peu chamboulé -en bien ceci dit- l'interface de Code::Blocks)... Jusque là ok.
Ensuite j'ai mis à jour les propriétés de mon projet: options du compiler, options du linker, liens vers les libs et les include widgets... Jusque là... ça me paraissait ok.
Et puis... L'heure du build arriva. La compilation s'effectue sans problème mais au link, catastrophe !
Actuellement j'en suis à des erreurs du genre "undefined reference to 'wxSystemOptions::GetOption(...)'. Pourtant j'ai mis les lib widgets dans mes options (la base, la core et même l'advance), pourtant j'ai bien mis le path vers les lib, pourtant j'ai bien mis le flag wxUSE_UNICODE et pourtant je suis bien sur ma target Debug...
Bref, là je suis à court d'idée.
Peut être une piste: j'ai vu un truc bizarre: par exemple pour 'wxSystemOptions::GetOption(...)', le paramètres indiqué dans la fenêtre d'erreur était du genre 'wxString const &'. Par contre, dans le fichier d'entête de wxwidget (sysopt.h je crois), je vois une déclaration avec un paramètre 'const wxString &'...
Quelqu'un aurait'il déjà tenter la même chose que moi, et si oui, aurait'il eu plus de succès ?
Je souhaite passer aux wxWidgets et je trouve Code::Blocks vraiment très bien (hormis la partie RAD (wxSmith) qui est encore loin de la convivialité et de la puissance de ce que nous avait fourni Borland dans Delphi ou C++ Builder... certes wxSmith est toujours en WIP...), mais là, je reste sur ma faim. Je peux faire des appli GUI Win32 c'est déjà ça... mouais...
Vous n’avez pas trouvé la réponse que vous recherchez ?