PDA

Voir la version complète : wxWidget


ganlhi
26/10/2005, 18h24
Salut !

J'essaie de compiler ça :


#include "main_window.h"

Win::Win() : wxFrame(NULL,-1,"Bonjour tout le monde",wxDefaultPosition,wxSize(300,200))
{
}


et voila l'erreur :

ganlhi@osiris wxwidget $ g++ `wx-config --cppflags` -c main_window.cpp
main_window.cpp: Dans constructor « Win::Win() »:
main_window.cpp:4: error: conversion from `const char[22]' to `const wxString'
is ambiguous
/usr/include/wx-2.6/wx/string.h:643: error: candidates are:
wxString::wxString(wchar_t, unsigned int) <near match>
/usr/include/wx-2.6/wx/string.h:632: error:
wxString::wxString(int) <near match>


Quelqu'un saurait me dire pourquoi ?

Mokona
26/10/2005, 19h15
Le compilateur ne voit pas comment transformer le type de ta chaine de caractère en type de chaîne de caractère wxWidget.

Il te propose de passer par wxString::wxString(wchar_t, unsigned int)

ganlhi
26/10/2005, 20h11
Euh... tu pourrais me donner le code qui irait bien, parce que j'ai fait quelques essais, mais je n'ai réussi qu'a ajouter plus d'ambiguité

Mokona
26/10/2005, 20h58
Après un rapide regard sur la doc (je n'ai pas wxWidget installé), essai de mettre wxT("Bonjour tout le monde") au lieu de la chaine directement.


Finally, there is a special wxT() macro which should enclose all literal strings in the program. As it is easy to see comparing the last fragment with the one above, this macro expands to nothing in the (usual) ANSI mode and prefixes 'L' to its argument in the Unicode mode.

(http://wxwidgets.org/manuals/2.5.3/wx_unicode.html)


Bref, ça va transtyper en wchar_t et là, le compilateur trouvera le bon constructeur.

ganlhi
27/10/2005, 10h33
cool, ça marche !

Merci ;)

ganlhi
27/10/2005, 10h39
Aïe deuxieme probleme à l'édition de liens :

ganlhi@osiris wxwidget $ g++ -o testwx application.o main_window.o `wx-config --libs`
/usr/bin/ld: warning: libstdc++.so.6, needed by /usr/lib/gcc-lib/i486-linux/3.3.5/../../../libwx_gtk2u_xrc-2.6.so, may conflict with libstdc++.so.5

Mokona
27/10/2005, 11h36
Ca, c'est plus génant, l'éditeur de liens te dis qu'il a lié ton programme avec une version de la libstdc++ (bibliothèque standard C++) ainsi qu'avec une bibliothèque qui elle, est liée avec une autre version (antérieure) de cette même libstdc++.

Il t'averti que ça peut faire n'importe quoi... tout comme ça peut marcher.

Il faudrait que tu ais soit la même version de compilateur (plus exactement, des bibliothèques) que celle qui a servi à la compilation de wxWidget, ou bien que tu prenne une version de wxWidget compatible avec ta version de bibliothèque (là, je n'ai pas assez d'expérience avec wxWidget pour connaître la faisabilité de ça, il faudrait fouiller sur leur site).

ganlhi
27/10/2005, 18h36
on avance !
apres maj de gcc et g++, j'ai pu faire l'edition de liens.
mais, à l'exécution :


ganlhi@osiris wxwidget $ ./testwx
Fatal Error: Mismatch between the program and library build versions detected.
The library used 2.6 (no debug,Unicode,compiler with C++ ABI 1002,wx containers,compatible with 2.4),
and your program used 2.6 (no debug,Unicode,compiler with C++ ABI 102,wx containers,compatible with 2.4).
Abandon