begin process at 2010 03 16 12:48:10
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Système

 > [DEV C++]DLL EN C++ POUR UN PROGRAMME EN C++

[DEV C++]DLL EN C++ POUR UN PROGRAMME EN C++


 Information sur la source

Note :
9,33 / 10 - par 3 personnes
9,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Système Niveau :Débutant Date de création :31/03/2003 Date de mise à jour :31/03/2003 19:06:22 Vu / téléchargé :15 055 / 1 263

Auteur : PierreF

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Simple exemple d'utilisation d'une DLL faite en C++ dans un programme en C++ avec DevC++ (ma version est la 4.9.7.0 avec gcc 3.2)


Source

  • Le projet de la DLL et un projet vide auquel j'ai change le type (Option du projet->Type->win32 DLL)
  • Le projet qui utilise le dll est n'importe quel type de projet, il suffit de déclaré le fonction (voir usedll.cpp) et de pense a mettre le lib???.a dans les librairie du projet (voir usedll.cpp)
  • **** project de la DLL ****
  • type: win32 dll
  • ** dll.cpp**
  • //j'ai crée un project vide, puis option du projet->type->win32 dll
  • #include <windows.h> //pour MessageBox
  • int __declspec (dllexport) msgbox3(char *buffer) //une fonction exporter
  • {
  • MessageBox(NULL,buffer,"DLL!!!",0);
  • return 0;
  • }
  • **** project qui utilise la dll ****
  • type : win32 console (pour être autre chose)
  • lib : libdll.a
  • ** usedll.cpp **
  • //il faut ajouter lib???.a où ??? c'est le nom du projet de la dll
  • // c'est dans Project Option->Optional Lib (tout en bas)
  • //chez moi c'est libdll.a
  • int __declspec (dllimport) msgbox3(char *buffer); //je déclare ma fonction
  • int main()
  • {
  • msgbox3("Utilise une DLL!");
  • return 0;
  • }
Le projet de la DLL et un projet vide auquel j'ai change le type (Option du projet->Type->win32 DLL)

Le projet qui utilise le dll est n'importe quel type de projet, il suffit de déclaré le fonction (voir usedll.cpp) et de pense a mettre le lib???.a dans les librairie du projet (voir usedll.cpp)

**** project de la DLL ****
type: win32 dll

** dll.cpp**

//j'ai crée un project vide, puis option du projet->type->win32 dll
#include <windows.h> //pour MessageBox

int __declspec (dllexport) msgbox3(char *buffer) //une fonction exporter
{
	MessageBox(NULL,buffer,"DLL!!!",0);
	return 0;
}

**** project qui utilise la dll ****
type : win32 console (pour être autre chose)
lib : libdll.a

** usedll.cpp **

//il faut ajouter lib???.a où ??? c'est le nom du projet de la dll
// c'est dans Project Option->Optional Lib (tout en bas)
//chez moi c'est libdll.a

int __declspec (dllimport) msgbox3(char *buffer); //je déclare ma fonction

int main()
{
    msgbox3("Utilise une DLL!");
    return 0;
}

 Conclusion

Voila. Un problème : laissez un message

Le principale problème est que le nom d'une fonction exporté (pas exemple msgbox3) est exporté sous __Z8_msgbox3P4@4 ce qui pose des problème pour utilisé cette DLL avec autre chose qu'un programme fait en C++ avec DevC++. (si qqun sait comment resoudre ce problème merci de me le faire savoir)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • app.devTélécharger ce fichier [Réservé aux membres club]775 octets
  • app.exeTélécharger ce fichier [Réservé aux membres club]97 693 octets
  • app.layoutTélécharger ce fichier [Réservé aux membres club]109 octets
  • dll.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier398 octets
  • dll.devTélécharger ce fichier [Réservé aux membres club]765 octets
  • dll.dllTélécharger ce fichier [Réservé aux membres club]93 263 octets
  • dll.layoutTélécharger ce fichier [Réservé aux membres club]107 octets
  • libdll.aTélécharger ce fichier [Réservé aux membres club]2 194 octets
  • libdll.defTélécharger ce fichier [Réservé aux membres club]292 octets
  • main.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier522 octets
  • main.oTélécharger ce fichier [Réservé aux membres club]818 octets
  • main2.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier3 714 octets
  • main2.oTélécharger ce fichier [Réservé aux membres club]1 706 octets
  • Makefile.winTélécharger ce fichier [Réservé aux membres club]625 octets
  • readme.txtTélécharger ce fichier [Réservé aux membres club]Voir ce fichier822 octets
  • usedll.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier457 octets
  • usedll.devTélécharger ce fichier [Réservé aux membres club]785 octets
  • usedll.exeTélécharger ce fichier [Réservé aux membres club]92 614 octets

Télécharger le zip


 Sources du même auteur

Source avec Zip [VC++]DLL C++ DANS VB

 Sources de la même categorie

Source avec Zip Source avec une capture [C/WIN32/WMI]SAVOIR SI UNE CLASSE COM EST INSTALLÉE par rt15
Source avec Zip Source avec une capture [C/WIN32][DRIVER] DÉTECTION DE CRÉATION OU DE SUPPRESSION DE... par deck_bsd
Source avec Zip DÉTECTION DE LANCEMENT D'APPLICATION (WIN32, REGISTERSHELLHO... par buno
Source avec Zip Source avec une capture [C/WIN32] INJECTION DE DLL 2 MÉTHODES (REMOTETHREAD PROPRE &... par deck_bsd
PRODUCER CONSUMER C (WITHIN LINUX) par PCBill

Commentaires et avis

Commentaire de BruNews le 31/03/2003 19:50:32 administrateur CS

pour eviter decoration des noms tu peux mettre le nom de tes fonctions exportees dans un .def
2eme solution, extrait du Richter, moi je me sers du .def
#define MYLIBAPI  extern "c" __declspec(dllexport)
int MYLIBAPI  msgbox3(char *buffer);
ciao...

Commentaire de Xs le 31/03/2003 20:13:04

alors la... je dis bien joué. C'est pas que le code est extremement original, mais il a le mérite d'etre clair et court.
Cependant =&gt; http://www.cppfrance.com/article.aspx?Val=871

De plus, le commentaire de BruNews est trés, mais alors trés, utile : éviter les décorations est l'une des grosses questions qui a été posée, et je crois non résolue, sur le site www.developpez.com . Et toi, tu y a répondu rapidement et clairement. Decidement, ce soir, je me coucherais moins betes. :)

Commentaire de bobidop le 31/03/2003 20:26:35

yep c bien cool de mettre tout ca mais moi je galere encore avec les pointeurs je ne comprend pas grand chose malheureusement...
jy reviendrais pe etre plus tard sur ce thread!
thx en tt K;-)

Commentaire de RaphAstronome le 01/04/2003 18:51:25

Bravo

Commentaire de camel le 02/04/2003 11:35:14

tranquille le code .. et la remarque de BruNews est très interessante. Mais moi je ne sais pas comment fonctionne les .def si qqn pouvais m'expliquer ? thx

Commentaire de BruNews le 02/04/2003 12:27:00 administrateur CS

exemple d'un .def

EXPORTS
  bnFunc1
  bnFunc2
Stop ici, seulement liste nom des fonctions a exporter, inclure le .def dans le projet et va tout bon.
ciao...

Commentaire de camel le 02/04/2003 13:39:22

merci bien :)

Commentaire de chichi3373 le 06/09/2003 15:45:33

Salut
  
   ben moi j'ai pas resolu mon probleme de decoration. J'utilise pas de .def parceque je sais pas comment dire a devc++ de l'utilisé (il ignore les param de linkage quand je suis en type DLL donc pas de '--def mon.def').
    Pour la solution extern "c" __declspec(dllexport), elle marche bien pour les variable (type int ou meme class) mais pas pour les fonction.
    Un detail, pour oriente la reponse, j'utilise la dll sous delphi, donc peu m'importe que le nom sois correcte ou pas dans le fichier lib???.a

Merci a vous.

Commentaire de chichi3373 le 06/09/2003 15:55:58

Re salut

j'utilise pas exactement la solution :

#define MYLIBAPI  extern "c" __declspec(dllexport)
int MYLIBAPI  msgbox3(char *buffer);

mais :

#define MYLIBAPI  extern "c" __declspec(dllexport)
MYLIBAPI int  msgbox3(char *buffer);

sinon ca plante a la compile !!! (parse error before extern)

Voila

Commentaire de Naze le 14/10/2003 02:18:08

Salut tout le monde,

Est-ce que c'est possible d'utiliser une DLL créer avec DevC++ dans un projet C# de VS.NET ?
merci

Commentaire de deck_bsd le 23/06/2006 16:07:57

pile poile ce que je cherchai :D

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,421 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales