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

Code::Blocks Discussion :

Cr�er une DLL C++ ?


Sujet :

Code::Blocks

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair�
    Profil pro
    lkjlgj
    Inscrit en
    F�vrier 2007
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activit� : lkjlgj

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 255
    Par d�faut Cr�er une DLL C++ ?
    Bonjour,

    J'utilise la derni�re version de Code Blocks pour cr�er une
    DLL. Or, les options de cr�ation sont "DLL sample" et "C source ".
    Le premier fichier source cr�� est "main.c".

    Mais alors comment je fais pour programmer quelque chose en C++
    dans cette DLL ?

    Merci.

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Tu ajoutes des fichiers source C++ dedans ?

    PS: Une DLL qui exporte des classes C++ faites avec MinGW ne marchera qu'avec des programmes compil�s avec MinGW : Seule l'interface C (fonctions C ou fonctions C++ extern "C") est standardis�e sous Windows...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre �clair�
    Profil pro
    lkjlgj
    Inscrit en
    F�vrier 2007
    Messages
    255
    D�tails du profil
    Informations personnelles :
    Localisation : Angola

    Informations professionnelles :
    Activit� : lkjlgj

    Informations forums :
    Inscription : F�vrier 2007
    Messages : 255
    Par d�faut
    Hein ?

    Alors �a veut dire que si je veux cr�er une DLL qui contient un objet afin de
    faire tourner cette librairie avec ... disons un programme �crit en Borland C++
    Builder... C'est impossible ????

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Tu ne pourras pas utiliser la classe C++ avec BCB, sauf en utilisant des wrappers C ou un syst�me d'interfaces fa�on COM/OLE...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre confirm�
    Inscrit en
    Octobre 2005
    Messages
    87
    D�tails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 87
    Par d�faut
    Je viens de lire ce topic et cela ne m'enchante pas. Sous cobe blocks avec mingw rien de plus simple pour cr�er une dll.
    De plus j'utilise code::blocks avec gcc sous linux et la aussi super simple de cr�er un .so (lib dynamique).
    Mais avec msvc2005, pff quel gal�re. Dois-je obligatoirement sp�cifier des __ddl_export et import afin d'avoir des points d'entr�e?

    De plus msvc2005 va t il me d�corer mes fonctions? Car j'inclus des librairie statics (.lib), cela causera t il des soucie lors de l'ex�cution d'un programme utilisant ma librairie?

    Merci

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    1. J'aimerais bien savoir � quel point il est "rien de plus simple" de cr�er une DLL sous MinGW. Je rappelle qu'on est suppos� choisir quelles fonctions on exporte ou non...
    2. Sous MSVC, deux fa�ons d'exporter des fonctions dans un projet DLL:
      • D�clarer certaines fonctions (ou classes) en __declspec(dllexport) pour dire "ces fonctions seront export�es". Les fonctions C seront alors export�es avec la d�coration "C" standard de Windows (voir Format of a C Decorated Name)
      • Ou �crire un fichier .def qui indique quelles fonctions seront export�es, et permet �galement de ne PAS mettre certaines fonctions dans la biblioth�que statique d'importation (pour certaines fonctions dont le nom ne change jamais) ou de choisir compl�tement sous quel nom la fonction sera export�e (une fonction appel�e "foo" peut �tre export�e sous le nom "bar" si on veut).
    3. Pour le coup de dllexport, on utilise g�n�ralement un fichier d'en-t�te et quelque macros pour pouvoir r�utiliser le fichier en question. Visual est capable de g�n�rer automatiquement un tel fichier d'en-t�te, produisant un truc dans ce style: http://www.developpez.net/forums/sho...42&postcount=6
      • Ainsi, pour faire une fonction export�e int foo(const char *), il suffit de la d�clarer ainsi:
        EXTERN_C MADLL_API int foo(const char *);
        Ce qui donne une fonction export�e par la DLL, et utilisable aussi bien en C qu'en C++.
      • D'ailleurs, toutes les fonctions sont d�clar�es ainsi sous Windows (sauf qu'en plus, elles ont la convention d'appel WINAPI (__stdcall) au lieu de __cdecl).

    Note: Pour des fonctions C ou des fonctions C++ extern "C", il n'y a aucun probl�me de compatibilit�.

    Pour des classes C++, le format de d�coration d�pend du compilateur. Donc, si l'on veut utiliser les classes directement, l'on se retrouve oblig� de lier au .lib et de garder le m�me compilo.
    Par contre, on peut utiliser les classes indirectement, avec des "wrappers C" ou un syst�me d'interfaces comme celui de COM/OLE (ou tout syst�me perso).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Comment cr�er une dll � parti d'un programme en C
    Par laetous dans le forum Windows
    R�ponses: 5
    Dernier message: 02/09/2006, 11h05
  2. [VB6]comment cr�er une dll
    Par kboo dans le forum VB 6 et ant�rieur
    R�ponses: 1
    Dernier message: 12/04/2006, 14h32
  3. Comment (ou peut on) cr�er une DLL .NET ?
    Par Mickey.jet dans le forum Delphi .NET
    R�ponses: 4
    Dernier message: 02/04/2006, 15h54
  4. Comment cr�er une dll Win32 sous Delphi ?
    Par Mickey.jet dans le forum Langage
    R�ponses: 8
    Dernier message: 16/06/2005, 15h38
  5. [MFC]Cr�er une DLL BIS
    Par Furtif_00 dans le forum MFC
    R�ponses: 5
    Dernier message: 28/06/2004, 14h48

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