Mais comment utiliser wxWidgets avec Code::Blocks et VC++ 7.1 toolkit ??!!!

Signaler
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
-
Messages postés
1
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
28 septembre 2006
-
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 ?

Merci d'avance.

5 réponses

Messages postés
547
Date d'inscription
mercredi 8 janvier 2003
Statut
Membre
Dernière intervention
7 octobre 2007
1
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?

Cordialement

Fred Cailleau-Lepetit (http://cfred.free.fr)
Messages postés
216
Date d'inscription
mardi 15 juin 2004
Statut
Membre
Dernière intervention
26 février 2006
1
Exact, c'est une piste... Mais malheureument je croit avoir défini tous les chemins.


J'ai ressayé de compiler avec DevC++ cette fois, ca ne marche toujours pas, strictement le même problème.

J'ai bien peur que le problème ne vienne des librairies elle-même, c'est à dire des librairies peut être mal compilées par VC 7.1++


Messages postés
252
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
5 septembre 2006

Ca peut t'aider : Wx-Devcpp
Messages postés
1
Date d'inscription
mardi 1 août 2006
Statut
Membre
Dernière intervention
24 août 2006

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...
Messages postés
1
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
28 septembre 2006

Salut,


Vérifie que tu n'aies pas l'option -DWXUSINGDLL dans ton projet.

J'avais le même problème que toi. Je linke avec les librairies statiques de WxWidgets 2.6.3.

Après avoir enlevé cette option (qui est rajoutée par le Wizard de Code:Blocks), cela a marché du feu de Dieu.

Voilà, en espérant que ton problème soit le même que le mien.

A+