IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Autres éditeurs Discussion :

[g++]Inclure une .dll


Sujet :

Autres éditeurs

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut [g++]Inclure une .dll
    Bonjour à tous !

    Alors voilà, j'ai un problème de neuneu : j'arrive pas à inclure une dll.
    Voilà la ligne du makefile correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $(CPP) -c XMLHandler.cpp -o XMLHandler.o -lxerces-c_2.lib -Llib $(CXXFLAGS)
    j'ai essayé avec .dll à la place de .lib (j'ai les 2 dans le même répertoire "lib"), mais çà ne change rien, j'obtiens toujours :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XMLHandler.h:4:42: xercesc/util/PlatformUtils.hpp: No such file or directory
    J'utilise le g++ fourni avec dev-c++ (pas le choix), alors j'ai téléchargé la librairie xerces du devpak xerces pour dev-c++.

    Voilà, si quelqu'un pouvait m'aider çà me permettrait de plus m'arracher les cheveux .
    A bientôt !

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    1/ C'est un en-tête (.h) qu'il ne trouve pas, aucun rapport (pour le moment) avec le fichier bibliothèque.

    2/ Ce sont des .a qu'il faut fournir à MinGW (g++), pas des .lib. Et libxxx.a s'ajoutera via "-lxxx" dans les options d'édition de lien.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    Je pensais que les headers étaient inclus dans la dll, qui serait alors une sorte d'archive. Mais quand j'y repense, une dll étant binaire c'est qu'elle est compilée, donc il peut pas y avoir de header dedans.

    Pour le 2/, j'aurai un problème puisque la dll commence pas par "lib", mais je verrai çà en temps utile.

    Merci !

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    Voilà, j'ai réglé le problème des headers, j'ai maintenant le problème de la bibliothèque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    C:/Dev-Cpp/bin/g++.exe -c XMLHandler.cpp -o XMLHandler.o -lxerces-c_2 -Llib -Iinclude/c++ -Iinclude/c++/mingw32 -Iinclude/c++/backward  -Iinclude  -IC:\Dev-Cpp\xerces-c_2_5_0\include
    g++.exe: -lxerces-c_2: linker input file unused because linking not done
    J'imagine qu'il faut convertir le .lib correspondant à la .dll en archive (.a) ; comment faire ?

  5. #5
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Tu n'as pas trouvé la version MinGW (.a) de ta bibliothèque ? Sinon tu peux toujours tenter d'utiliser reimp (fourni dans les outils MinGW).

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    ben non, ce que je comprends pas c'est que j'ai téléchargé la version dev-cpp (avec l'outil de téléchargement devpaks de dev-cpp, donc pas d'erreurs), mais il y a pas de .a dedans, juste le .lib. Donc je comprends pas, si vraiment le compilateur de mingw prend pas les .lib je vois pas l'intérêt.

    Je vais continuer de fouiller, et aller voir du côté de reimp.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    bon, j'ai toujours pas trouvé de .a pour xerces dans dev-c++.

    j'ai installé le devpak mingw-utils pour avoir reimp, j'ai essayé, et boum, "out of memory". j'arrive pas à m'en débarasser de ce message. est-ce tu saurais d'où çà peut venir ? je me suis dit que peut-être j'exécutais pas la commande sous le bon environnement, mais pourtant je la lance sous cygwin (j'ai aussi essayé avec le shell windows normal), qui est basé sur mingw ; j'ai cherché si il yavait un package mingw-utils spécifique pour cygwin mais j'ai pas trouvé.

    sinon j'ai aussi cherché une version de xerces spécifique pour mingw, j'ai pas trouvé non plus. raheuh.... c'est moi qui ai du mal ou mingw n'est pas trés étoffé ?

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Si le devpack te fournit un .lib tu peux toujours tenter de lier avec (bien que ça me paraisse bizarre...), parfois l'éditeur accepte les .lib sans ronchonner.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    oui j'ai essayé aussi, le linker râle pas mais j'ai toujours le message m'indiquant qu'il trouve pas ce qu'il cherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C:/Dev-Cpp/bin/g++.exe -c XMLHandler.cpp -o XMLHandler.o -lxerces-c_2 -Llib -Iinclude/c++ -Iinclude/c++/mingw32 -Iinclude/c++/backward  -Iinclude  -Iinclude/xercesc
    In file included from include/xercesc/util/XMLString.hpp:256,
                     from include/xercesc/dom/DOMConfiguration.hpp:64,
                     from include/xercesc/dom/DOM.hpp:100,
                     from XMLHandler.h:5,
                     from XMLHandler.cpp:1:
    include/xercesc/util/BaseRefVectorOf.hpp:189:42: xercesc/util/BaseRefVectorOf.c: No such file or directory
    make: *** [XMLHandler.o] Error 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $ ls lib
    CVS  xerces-c_2.lib  xerces-c_2_5_0.dll
    sinon j'ai trouvé le .a pour cygwin, qui s'appelle libxerces-c25.dll.a.
    je lie avec, çà change rien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C:/Dev-Cpp/bin/g++.exe -c XMLHandler.cpp -o XMLHandler.o -lxerces-c25.dll -Llib -Iinclude/c++ -Iinclude/c++/mingw32 -Iinclude/c++/backward  -Iinclude  -Iinclude/xercesc
    In file included from include/xercesc/util/XMLString.hpp:256,
                     from include/xercesc/dom/DOMConfiguration.hpp:64,
                     from include/xercesc/dom/DOM.hpp:100,
                     from XMLHandler.h:5,
                     from XMLHandler.cpp:1:
    include/xercesc/util/BaseRefVectorOf.hpp:189:42: xercesc/util/BaseRefVectorOf.c: No such file or directory
    make: *** [XMLHandler.o] Error 1
    j'ai l'impression qu'il se fout totalement du la librairie que je lui donne après le "-l"

  10. #10
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    Citation Envoyé par NorthernLights
    j'ai l'impression qu'il se fout totalement du la librairie que je lui donne après le "-l"
    Complétement 8)

    Là tu as une erreur de compilation, donc aucune édition de lien n'a encore été tentée. En l'occurence il ne trouve pas le fichier xercesc/util/BaseRefVectorOf.c.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    ah la vache j'ai du mal !
    je pensais que son .c il le trouverait dans la librairie. apparemment j'ai rien compris à ce sujet, il va falloir que je me documente...
    donc, je dois récupérer toutes les sources de xerces ? quel est l'intérêt d'une librairie alors ?

    edit: et puis j'ai pas compris grand-chose à la compilation aussi je crois (au sens large je veux dire : compilation, édition, poil au front)

  12. #12
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    edit: et puis j'ai pas compris grand-chose à la compilation aussi je crois (au sens large je veux dire : compilation, édition, poil au front)
    Ca se trouve dans des cours. En (très) gros, il y a 9 phases depuis le moment où tu lances la compilation jusqu'au moment où ton binaire est généré. On peut résumer ça en 3 étapes prnicipales :

    - Préprocessing : le préprocesseur interprete les directives préprocesseur (commençant par un #) et les remplace par ce qu'il faut -- macros, inclusions, ...
    - Compilation : chaque unité de traduction (fichier source) est compilé séparément, donnant le .o correspondant.
    - Edition de liens : les fichiers .o et les bibliothèques avec lesquelles tu lies sont "assemblés" par l'éditeur de lien afin de créer le binaire final.

    Donc, on ne peut trouver dans une bibliothèque que des définition de fonctions (compilées) ou de variables. Pas de fichier source.

    donc, je dois récupérer toutes les sources de xerces ? quel est l'intérêt d'une librairie alors ?
    Je t'avoue qu'il est bizarre d'inclure autre chose qu'un en-tête... Peut-être est-ce le seul, essaye de te procurer ce BaseRefVectorOf.c.

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    Merci pour ces précisions.

    J'ai téléchargé toute la source de xerces sur le site d'apache, copié le répertoire include (qui lui contenait ce fameux .c), et maintenant il compile, sans même que je lie avec une quelconque librairie. j'ai regardé le .hpp, il y a bien un #include du fichier .c dedans. bizarre.......
    bref, pour le moment çà marche. (enfin çà compile)

    merci beaucoup ! :-)

  14. #14
    Membre averti
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 42
    Par défaut
    Alors maintenant évidemment, çà compile mais çà lie pas
    J'ai récupéré la dll de xerces qui dans mon répertoire "bin", j'ai converti la .lib qui correspondait en .a (j'ai plus de "out of memory"), je l'ai mise dans mon repertoire "lib", je lie... et boom, j'ai plusieurs lignes comme celle-là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XMLHandler.o:XMLHandler.cpp:(.text+0x18a): undefined reference to `_imp___ZN11xercesc_2_76XMLUni22fgXercescDefaultLocaleE'
    est-ce que çà pourrait être dû au fait que la version de xerces que j'utilise maintenant a été compilée pour windows natif, et donc pas pour mingw ? (dans mon précédent message j'ai écrit que j'avais utilisé les sources mais je m'étais trompé, c'est la version compilée)

  15. #15
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut, j'ai exactement le même problème. J'ai essayé plusieurs trucs et ce que je peux dire c'est que les binaries (win2000) ne marche pas sous dev-c++ et XP, erreurs du linker. Conversion .lib -> .a avec reimp, mêmes erreurs.

    Donc j'ai quelques questions :

    - Ce que je ne comprends pas, si quelqu'un pouvait m'expliquer ^^, c'est que maintenant j'utilise les sources de xerces-c donc à priori je n'ai besoin de linker aucun .lib ou .a, et pourtant j'ai exactement les mêmes messages d'erreurs du linker que si je compile et link avec les binaries.

    - Je crois qu'il faut reconstruire (building) la bibliothèque sur ma machine mais je ne comprends pas trop ce que cela veut dire. Quelqu'un pourrait-il m'expliquer en gros en quoi cela consiste ? (à créer un .lib, .a, .dll, ou je ne sais quoi ? ^^)

    Merci d'avance pour vos réponses, c'est la grosse galère
    A+

Discussions similaires

  1. inclure une DLL dans une Librairie
    Par TheBlackReverand dans le forum C#
    Réponses: 11
    Dernier message: 20/12/2007, 11h01
  2. Inclure une DLL
    Par Général03 dans le forum C++Builder
    Réponses: 29
    Dernier message: 06/11/2007, 21h33
  3. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00
  4. [dll] inclure une dll
    Par baert dans le forum Autres éditeurs
    Réponses: 9
    Dernier message: 25/11/2003, 10h46
  5. Inclure une dll dans une ressource
    Par bgcode dans le forum C++Builder
    Réponses: 4
    Dernier message: 21/08/2003, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo