[dev c++]dll en c++ pour un programme en c++

Soyez le premier à donner votre avis sur cette source.

Vue 19 775 fois - Téléchargée 1 467 fois

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 / Exemple :


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)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
samedi 13 octobre 2007
Statut
Membre
Dernière intervention
18 mai 2010

Je viens de lire et j'étais dans le même cas :

"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')."

J'ai finalement trouvé ! Il faut tout d'abord compiler une première fois. DevC++ crée un fichier DEV et un Makefile. Ensuite il faut copier le Makefile.win pour en faire un Makefile2.win. Ainsi que fichier.dev pour en faire un fichier2.dev. Dans le fichier2.dev, il faut substituer :
MaFonction @12 @1
par : MaFonction = MaFonction @12 @1
Il faut également modifier dans Makefile2, le nom du fichier DEV qui devient fichier2.dev.
Mais surtout il faut remplacer dans dllwrap :
--output-def
par : --def
sinon notre nouveau fichier2.dev va se faire écraser !!
Après tout ça, il faut juste indiquer à DevC++ qu'il doit utiliser Makefile2 (dans les options du projet).

A+
Jean-Luc
Messages postés
1243
Date d'inscription
jeudi 31 mars 2005
Statut
Membre
Dernière intervention
3 août 2016
1
pile poile ce que je cherchai :D
Messages postés
12
Date d'inscription
jeudi 10 octobre 2002
Statut
Membre
Dernière intervention
25 août 2007

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
Messages postés
3
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
28 août 2003

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
Messages postés
3
Date d'inscription
vendredi 22 août 2003
Statut
Membre
Dernière intervention
28 août 2003

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.
Afficher les 12 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.