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

MFC Discussion :

Inclusion d'une DLL dans un exe?


Sujet :

MFC

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut Inclusion d'une DLL dans un exe?
    Bonjour,

    J'ai des sources en C que je compile avec VC++ en incluant une DLL que j'ai en local. (Le projet créé sous VC++ n'utilise pas les MFC. )
    Je voudrais savoir si l'exe créé peut contenir ma DLL externe. Je souhaiterai l'utiliser tel que sur un autre poste qui ne possède pas la DLL.
    Si c'est possible, quelles sont les options à configurer?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    non ce n'est pas possible.


  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    De quelle dll il s'agit ?

  4. #4
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Tiens, c'est rigolo, il y a exactement le même débat et les mêmes réponses (mais postées par d'autres personnes, ce n'est pas un multi-post) dans le forum Borland.

    http://www.developpez.net/forums/viewtopic.php?t=385750

  5. #5
    mat.M
    Invité(e)
    Par défaut
    Je suis d'accord avec Aurélien et Farscape pas possible

    Une possiblité est de déclarer la dll en tant que binaire dans un fichier de ressources .rc et d'y accéder à l'exécution.

    Dans les fichiers ressources on peut lier avec l'exe des images ,sons ,textes mais aussi des données binaires

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    La DLL est libxml2.dll. C'est un parser C pour du XML.

    Comment déclarer la DLL en tant que binaire dans le fichier resources?
    En plus, je n'ai pas de fichier de resources..

    En tout cas, merci de vos réponses. Je pensais bien que vu le but des DLL de ne pas mettre leur code dans toutes les appli comme des lib statiques, c'était difficilement imaginable.

  7. #7
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    Alors c'est possible, de manière propre : il te faut recompiler la bibliothèque en tant que bibliothèque statique (lib) et non dynamique (dll). Elle sera alors liée directement dans l'exe => incluse dedans (bon c'est plus une dll, j'ai un peu menti )
    Si tu as der la chance, tu as déjà une version statique de fournie.

    edit: je viens de jeter un oeil, apparement libxml2_a.lib est ce qu'il te faut. Link avec ça au lieu de libxml2.lib.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    J'ai donc tenté de lier avec la librairie statique. Le résultat n'est pas du tout concluant... Faut il specifier une option au compilateur pour la lier statiquement?

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    Faut préciser l'erreur. Souvent c'est un problème de CRT (prorpiétés->C/C++->Génération de code->Bibliothèque runtime).

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Août 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    Effectivement, j'ai d'abord eu un problème de CRT. Mon appli était en Single Threaded Debug, je l'ai passée en Multithreaded DLL. Maintenant, j'ai une erreur sur errno

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     warning C4273: '_errno' : inconsistent dll linkage.  dllexport assumed.
    Et en plus, je recommence à avoir des erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ctrl_xml.obj : error LNK2001: unresolved external symbol _xmlCleanupParser
    ctrl_xml.obj : error LNK2001: unresolved external symbol _xmlFreeDoc
    C'est pour cela que je me demandais si le compilateur avait bien "compris" que ma lib est statique ou si je devais le lui spécifier.

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 671
    Points
    10 671
    Billets dans le blog
    3
    Par défaut
    Des fois y'a une macro à définir. Faut regarder dans le source de libxml...

Discussions similaires

  1. [Débutant] comment embed une DLL dans mon .exe final
    Par mapmip dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/10/2011, 11h55
  2. Dialog MFC d'une dll dans un exe non MFC
    Par auwel dans le forum MFC
    Réponses: 3
    Dernier message: 06/03/2009, 20h23
  3. [VB] COmment compiler une dll dans un exe (zlib.dll)
    Par Khrysby dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 01/11/2005, 12h10
  4. Intégrer une dll dans un EXE
    Par Akim13 dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 02h11
  5. Inclure une DLL dans le .exe final?? possible?
    Par xavmax dans le forum C++Builder
    Réponses: 9
    Dernier message: 22/08/2005, 17h00

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