Ecrire une Dll en C

Résolu
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007 - 12 déc. 2006 à 11:38
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007 - 15 déc. 2006 à 15:10
Bonjour, j'ai écrit un programme en C sous VC++ et je voudrais pouvoir exporter certaines de ses fonction dans une Dll, comment dois-je proceder ?

Sur certains tutorials que j'ai trouvé il etait indiqué d'ajouter une fonction BOOL APIENTRY DllMain (...) puis de rajouter avant chaque fonction extern "C" __dllspec(dllexport) , mais j'ai l'impression que cela ne concerne que les programme écrits en C++ ?

Merci de m'éclairer

4 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 déc. 2006 à 18:00
Petite erreure:
"En C++, suffis de rajouter un "C" devans le extern"
C'est pas devans, c'est après extern:
extern "C" __declspec(....

C++ (@++)<!--
3
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 déc. 2006 à 15:56
En C (compilateur réglé sur compilation C)
extern __declspec(dllexport) int __stdcall fonction (int toto)
{
    return toto;
}

En C++, suffis de rajouter un "C" devans le extern

Sinon, tu peux aussi faire comme ceci:

extern int __stdcall fonction (int toto)
{
    return toto;
}

extern int __stdcall fonction2 (int toto)

{

    return toto;

}

puis mettre dans un fichier .def que tu joindra au projet:

EXPORTS
    fonction
    fonction2

C++ (@++)<!--
0
SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
12 déc. 2006 à 17:53
Autre chose, si tu est sous VC++ 2005, il faut préciser manuellement le chemin du .def dans dans les propriétés du projet->Configuration properties->Linker->Input->Module Definiton File

C++ (@++)<!--
0
sleep Messages postés 68 Date d'inscription mardi 2 mars 2004 Statut Membre Dernière intervention 10 mai 2007
15 déc. 2006 à 15:10
Merci, tout fonctionne très bien maintenant !
0
Rejoignez-nous