Comment inclure une dll(appeler une fonction qui se trouve dans celle-ci dans un program C?
Comment inclure une dll(appeler une fonction qui se trouve dans celle-ci dans un program C?
Ca dépend de ton compilateur.
Fait une recherche sur msdn avec le mot clé "LoadLibrary" et "GetProcAddress".
j'utilise Vc++ comme compilateur et je voudrais appeler une fonction se trouvant dans un fichier .dll(j'ais aussi sa version .o)
Moi j'utilise
Le dllimport permet d'utiliser une fonction fournie par une dll, et le dllexport permet d'exporter une fonction, c'est à dire de signaler lors de la création de la dll que cette fonction sera appellable de l'extérieur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 #include <windows.h> #define DLL_IMPORT __declspec(dllimport) #define DLL_EXPORT __declspec(dllexport)![]()
Pour créer une dll sans tout configurer eb ligne de commande j'utilise pour ma part Dev-C++ avec Nouveau Projet DLL![]()
![]()
Comment utiliser ce code pour appeler par exemple la fonction vide() qui se trouve dans une dll :essai.dll?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 #include <windows.h> #define DLL_IMPORT __declspec(dllimport) #define DLL_EXPORT __declspec(dllexport)
Alors ben a priori (pas testé)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include <windows.h> #define DLL_IMPORT __declspec(dllimport) DLLIMPORT void vide(void); int main(void) { vide(); //Là tu l'utilise return 0; }
Tu écris ce code dans un projet vide Dev-Cpp, l'important après c'est de lier l'objet créé avec le fichier "dll.a" créé lors de la compilation de ta dll.
Le mieux avec visual est que tu lies le fichier .lib de ta dll avec ton projet et d'inclure l'entete qui va bien dans ton code. SI tu possédes le .o c'est tout aussi bien inclus le dans ton projet ( l'entete sera quand meme necessaire .h a moins que tu connaisses les proto des fonctions...)
Ensuite tu pourras appeler les fonctions 'normalement'.
Heu oui mais là on perd quand même l'intérêt d'une dll ...
Envoyé par @drien
Tu pourrais être plus explicite, parce que la je vois pas du tout.
L'objectif s'une dll c'est justement de pas inclure le code des fonctions dans ton executable![]()
Tu réponds par rapport à ma réponse d'inclure le fichier .o ?Envoyé par @drien
Dans ce cas je suis d'accord avec ce que tu dis.
OuiEnvoyé par hegros
![]()
C'est cool, je préferreEnvoyé par hegros
![]()
![]()
je dois avoir une petite forme en ce moment c'est pas le premier thread cette semaine où je réponds à coté...Envoyé par @drien
![]()
Partager