wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 3

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Utilisation des bibliothèques compilées wxpdfdoc
Conversation (Résolue) : Utilisation des bibliothèques compilées wxpdfdoc
22-08-2012 21:47:48  Utilisation des bibliothèques compilées wxpdfdoc #1
Berti (Membre)
Inscrit le : 19-08-2012
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne
Coucou les experts, me revoilou !

Grâce à Xaviou, j'ai finalement pu compiler wxpdfdoc et obtenir les bibliothèques avec les options de compilation adéquates.

J'essaie maintenant de compiler le tutorial1 du dossier wxpdfdoc\samples\minimal. J'ai testé auparavant que mon installation wxWidgets fonctionnait en compilant l'exemple wxWidgets-2.8.12\samples\minimal\minimal.cpp. Tout fonctionne !

Après avoir compilé wxpdfdoc, j'ai copié tout ce qui se trouvait dans le dossier include\wx et le dossier lib (dossier fonts et dossier vc_lib) dans les dossiers de mêmes noms qui se trouve dans le dossier de wxWidgets.

J'ai transformé tutorial1.cpp en main.cpp et gardé les mêmes paramètres que pour l'exemple minimal. J'ai rajouté dans projet\propriétés\propriétés de configuration\éditeur de liens\entrées\dépendances supplémentaires : wxcode_msw28ud_pdfdoc.lib

Je n'ai pas oublié (!) de modifier le traitement de wchat_t en tant que type intégr (=Non (/Zc:wchar_t-)).

En essayant de compiler avec l'EDI de visual c++ 2008 et les options debug win 32 unicode, le compilateur ne semble pas d'humeur joyeuse !!! Plusieurs warnings et des erreurs du type :

Code:

wxcode_msw28ud_pdfdoc.lib(pdffontdatatype1.obj) : error LNK2001: symbole externe non résolu "public: class wxString __thiscall wxXmlNode::GetPropVal(class wxString const &,class wxString const &)const " (?GetPropVal@wxXmlNode@@QBE?AVwxString@@ABV2@0@Z)


Eh ben voilà, je suis bloqué. Je sais que j'abuse, mais si quelqu'un peut me donner un petit coup de pouce, ce ne serait pas de refus...

Merci !

Berti
22-08-2012 22:21:27  Re: Utilisation des bibliothèques compilées wxpdfdoc #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

Ben moi, j'y suis arrivé (mais j'ai eut les mêmes erreurs que toi, je te rassure).

En fait, il faut ajouter la lib "wxregexud.lib" dans les options du linker.
Après ça, ça va encore foirer, car cette dernière lib a besoin d'une autre : "wxexpatd.lib".

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
22-08-2012 22:37:22  Re: Utilisation des bibliothèques compilées wxpdfdoc #3
Berti (Membre)
Inscrit le : 19-08-2012
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne
Salut Xaviou,

merci pour la réponse toujours très rapide et très claire !!!

As-tu utilisé la ligne de commandes ? Parce que moi, après avoir rajouté ces deux libs aux dépendances supplémentaires, la compilation avec l'EDI plante toujours !

A part ça et ta très grande expérience, comme on devine que c'est ces deux bibliothèques qu'il manque ?

remerci pour ta précieuse aide !

A+
22-08-2012 23:02:53  Re: Utilisation des bibliothèques compilées wxpdfdoc #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Non, je n'ai pas utilisé la ligne de commande, mais l'IDE.

Je suis parti d'un petit projet de test comprenant une frame "vide".
Je me suis d'abord assuré que ce projet était compilable avec la lib "Debug, Unicode, Static, Monolithic".
Ensuite, j'y ait ajouté un bouton et dans la fonction appelée par le click sur ce bouton, j'ai mis le code du fichier "tutorial1.cpp".

Berti:
Parce que moi, après avoir rajouté ces deux libs aux dépendances supplémentaires, la compilation avec l'EDI plante toujours !
Tu obtiens quoi comme erreurs ?

Pour ma part, j'ai eut d'autres erreurs relatives à deux libs manquantes : "wxpngd.lib" et "wxzlibd.lib".

Berti:
A part ça et ta très grande expérience, comme on devine que c'est ces deux bibliothèques qu'il manque ?
Généralement, en décortiquant bien une erreur, tu peux facilement trouver sa solution.
D'ailleurs, dans ton cas, les deux libs que j'ai donné dans mon 1er post, ainsi que les deux autres ci-dessus ne devraient pas résoudre l'erreur que tu as donné dans le premier post :
symbole externe non résolu "public: class wxString __thiscall wxXmlNode::GetPropVal.....

Le "symbole externe non résolu" t'indique un problème de link (bibliothèque manquante généralement)
Le reste de la ligne ("class wxString __thiscall wxXmlNode::GetPropVal") t'indique de quelle lib il s'agit (enfin, par déduction) :
Dans ce cas, il ne trouve pas "wxXmlNode::GetPropVal", c'est donc qu'il manque la lib "wxXml".
Le problème, c'est que dans le cas de la configuration "Debug, Unicode, Static, Monolithic", cette lib est normalement incluse à la lib monolithique (sauf si tu as désactivé la partie xml en compilant tes libs).

Peut-être qu'en analysant les autres erreurs que tu obtiens...

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
22-08-2012 23:21:43  Re: Utilisation des bibliothèques compilées wxpdfdoc #5
Berti (Membre)
Inscrit le : 19-08-2012
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne
L'ajout des deux premières libs m'a fait passer de 56 erreurs à 52 ! Les deux dernières m'ont permis d'arriver à 21 erreurs (+ quelques warnings).

Xaviou:
Je suis parti d'un petit projet de test comprenant une frame "vide".
Je me suis d'abord assuré que ce projet était compilable avec la lib "Debug, Unicode, Static, Monolithic".
Ensuite, j'y ai ajouté un bouton et dans la fonction appelée par le click sur ce bouton, j'ai mis le code du fichier "tutorial1.cpp".
C'est plus ou moins ce que j'ai fait. J'ai utilisé l'exemple minimal de wxWidgets et ai rajouté le code de tutorial1.cpp qui plantait lorsque je faisais la première instanciation "wxPdfDocument pdf".

Lors de l'ajout de "wxpngd.lib" et "wxzlibd.lib" la première erreur signalée est :

Code:

wxcode_msw28ud_pdfdoc.lib(pdffontdatatype1.obj) : error LNK2001: symbole externe non résolu "public: class wxString __thiscall wxXmlNode::GetPropVal(class wxString const &,class wxString const &)const " (?GetPropVal@wxXmlNode@@QBE?AVwxString@@ABV2@0@Z)


Je n'ai pas souvenir d'avoir désactivé une seule option lors de la compilation des libs...

PS : 2 erreurs de moins avec wxbase28d_xml.lib !

Dernière modification par Berti (22-08-2012 23:25:09)

22-08-2012 23:31:25  Re: Utilisation des bibliothèques compilées wxpdfdoc #6
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Je sais qu'avec MinGW, l'ordre des libs a une importance, mais avec Visual C++, ça n'a pas l'air d'être le cas (je viens de faire quelques tests pour vérifier).

Voici la liste des libs telle qu'elle apparaît dans la boite de configuration :

Code:

wxcode_msw28ud_pdfdoc.lib
wxmsw28ud.lib
wxpngd.lib
wxzlibd.lib
wxregexud.lib
wxexpatd.lib
comctl32.lib
rpcrt4.lib
winmm.lib
wsock32.lib
version.lib

et pour la partie "Valeurs héritées" :

Code:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
advapi32.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
odbc32.lib
odbccp32.lib


Sinon, je peux éventuellement te passer le petit projet si ça te dit.

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
22-08-2012 23:48:39  Re: Utilisation des bibliothèques compilées wxpdfdoc #7
Berti (Membre)
Inscrit le : 19-08-2012
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne
Je n'avais pas ajouté les libs suivantes :
winmm.lib
wsock32.lib
version.lib

la lib wxbase28d_xml.lib que j'ai rajoutée enlève 2 erreurs et j'ai la lib wxmsw28ud_core.lib qui était nécessaire pour la compilation du projet minimal wxWidgets. A noter que cette dernière lib n'est pas générée avec la ligne de commande

Code:

nmake -f makefile.vc CXXFLAGS=/Zc:wchar_t- WX_DEBUG=0 UNICODE=1 MONOLITHIC=1 SHARED=0 

Je l'ai obtenue avec l'Edit et la compilation de la solution wx.

Si j'enlève wxmsw28ud_core.lib j'ai 173 erreurs. En ajoutant les 3 libs citées au début du post, je n'ai pas d'améliorations ...

Je veux bien essayer ton petit projet, c'est sympa. Merci !

PS : pour les valeurs héritées, j'ai exactement la même liste !

Dernière modification par Berti (22-08-2012 23:49:59)

23-08-2012 00:04:54  Re: Utilisation des bibliothèques compilées wxpdfdoc #8
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Pour ce qui est de mon projet de test, tu peux l'obtenir avec ce lien.

Par contre, je ne sais pas si tu pourras l'ouvrir, car c'est du "VC++ 2010" et il me semble que tu es en 2008.

Berti:
la lib wxbase28d_xml.lib que j'ai rajoutée enlève 2 erreurs et j'ai la lib wxmsw28ud_core.lib qui était nécessaire pour la compilation du projet minimal wxWidgets. A noter que cette dernière lib n'est pas générée avec la ligne de commande

Code:

nmake -f makefile.vc CXXFLAGS=/Zc:wchar_t- WX_DEBUG=0 UNICODE=1 MONOLITHIC=1 SHARED=0 

Je l'ai obtenue avec l'Edit et la compilation de la solution wx.
Houlà : fais gaffe, tu es en train de mélanger plusieurs versions des libs wxWidgets, notamment, Monolithique et Multi-libs.
Les libs "wxbase28d_xml.lib" et "wxmsw28ud_core.lib" sont des parties des libs "Multi-libs".
Elles sont normalement déjà contenues dans le fichier "wxmsw28ud.lib".

Il y a donc un problème avec tes réglages.
Peut-être qu'en fouinant dans le fichier "vcxproj" de l'archive dont je t'ai donné le lien....

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
23-08-2012 00:19:40  Re: Utilisation des bibliothèques compilées wxpdfdoc #9
Berti (Membre)
Inscrit le : 19-08-2012
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne
Merci beaucoup Xaviou, c'est super sympa !

Tu as raison, je suis en train de me mélanger les pinceaux... Je vais aller au lit et regarder tout ça tranquillement demain !

A+

Berti

PS : j'ai aussi visual c++ 2010, pas de problème !

Dernière modification par Berti (23-08-2012 00:21:04)

23-08-2012 09:03:08  Re: Utilisation des bibliothèques compilées wxpdfdoc #10
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Tu as tout à fait raison : la nuit porte conseil.

Je n'arrivais plus à me rappeler la différence au niveau config d'un fichier projet pour les libs Monolithiques et Multi-Libs.

Et ce matin, j'ai trouvé la solution : générer deux projets grâce à l'outil présent sur ce site, et comparer les deux fichiers obtenus.

Et le résultat est tout simple :
- Pour la version Monolithique : la lib principale wxWidgets est ajoutée directement dans la liste des libs additionnelles du linker, et le fichier "setup.h" présent dans un sous-dossier des libs est ajouté à la liste des include forcés.
- Pour la version Multi-libs : les libs wxWidgets ne sont pas ajoutées à la liste des libs additionnelles du linker, et c'est le fichier "setup.h" qui cette fois se trouve dans le dossier "$(WXWIN)/include/msvc/wx/" qui fait partie des includes forcés. Les libs sont elles ajoutées directement depuis ce fichier grâce à la commande "pragma".

Voilà : j'espère que ça va te permettre de régler ton/tes problèmes.

Si tu veux vraiment avoir les deux versions des libs (monolithiques et multi-libs), je te conseille d'utiliser le paramètre "CFG" au moment de la compilation, ce qui te permettra de séparer les deux versions pour éviter tout conflit.
Pour faire simple, la valeur que tu donnes pour CFG sera ajoutée au nom du dossier des libs.
Par exemple, pour wxWidgets-2.9.4, je compile les versions 32 et 64 bits.
Le problème, c'est que les libs ont le même nom, il faut donc que je les sépare.
J'utilise donc la valeur "CFG=32" ou "CFG=64", et mes libs se retrouvent dans deux dossiers différents (par exemple, vc_dll32 et vc_dll64).
Donc, dans ton cas, tu peux sans problème utiliser "CFG=_Mono" et "CFG=_Multi" pour obtenir les deux dossiers "vc_lib_Mono" et "vc_lib_Multi" (enfin, ce n'est qu'un exemple).

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
23-08-2012 16:09:49  Re: Utilisation des bibliothèques compilées wxpdfdoc #11
Berti (Membre)
Inscrit le : 19-08-2012
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne
Merci pour les infos !!!

Aujourd'hui, tabula rasa ! J'ai tout effacé et recompilé avec visual c++2008 les bibliothèques wxWidgets et wxpdfdoc en ligne de commandes avec les mêmes options pour assurer la compatibilité.
Pour wxWidgets :

Code:

nmake -f makefile.vc CXXFLAGS=/Zc:wchar_t- BUILD=debug UNICODE=1 MONOLITHIC=1 SHARED=0

Pour wxpdfdoc :

Code:

nmake -f makefile.vc CXXFLAGS=/Zc:wchar_t- WX_DEBUG=1 WX_SHARED=0 WX_UNICODE=1 WX_MONOLITHIC=1 SHARED=0

A noter qu'à l'aide de l'EDI de visual c++ 2008, je n'ai trouvé aucune combinaison des options en mode DEBUG ( liste déroulante : * * debug win 32 unicode) qui me donne la lib wxmsw28ud.lib!!!

Bref, j'ai ensuite utilisé ton outil pour générer un projet wxWidgets sous visual c++ 2008. C'est très utile, merci beaucoup !
A part 2 warnings :

Code:

cl : Ligne de commande warning D9035 : l'option 'Wp64' est désapprouvée et sera supprimée dans une version ultérieure

Code:

LINK : warning LNK4098: conflit entre la bibliothèque par défaut 'MSVCRTD' et les autres bibliothèques ; utilisez /NODEFAULTLIB:library

tout semble fonctionner correctement !

En testant le tutorial1 de wxpdfdoc, j'ai dû rajouter la lib wxcode_msw28ud_pdfdoc.lib et les quatre libs que tu avais mentionnées dans les posts précédents :
wxregexud.lib
wxexpatd.lib
wxpngd.lib
wxzlibd.lib


Et cette fois-ci... ô merveille, tout fonctionne !!!!!!!!!!!!

je vais donc passer à l'étape suivante qui consiste à utiliser la lib wxwidget et la lib Qt (que j'utilise déjà dans plusieurs projets) dans un même projet !

MILLE MERCIS Xaviou pour tes conseils et infos toujours très avisés.

A+

Berti

Dernière modification par Berti (23-08-2012 22:55:17)

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Utilisation des bibliothèques compilées wxpdfdoc