Bonjour,
J'ai créer une DLL avec c++ et je ne trouve pas un tutorial claire et simple qui montre comment je dois faire pour réussir à faire un apelle à une DLL et utilisé ces fonctions.
Merci pour votre aide.
Version imprimable
Bonjour,
J'ai créer une DLL avec c++ et je ne trouve pas un tutorial claire et simple qui montre comment je dois faire pour réussir à faire un apelle à une DLL et utilisé ces fonctions.
Merci pour votre aide.
Bonjour,
Sous Windows, pour appeler une DLL on a deux possibilités :
:arrow: 1) - Soit on lie en statique sur la DLL.
:arrow: 2) - Soit on appelle la DLL à l'exécution (chargement dynamique).
1)
Lors de la création de la DLL, l'éditeur de lien produit un fichier .lib sur lequel le programme appelant la DLL devra être lié. On inclura aussi le fichier d'en-tête (*.h) nécessaire dans le code du programme (celui qui déclare les classes, fonctions, variables globales, etc. de la DLL).
2)
Pour une liaison dynamique (on a alors plus besoin du *.lib), on utilisera plusieurs APIs :
- LoadLibrary() qui charge la bibliothèque dynamique (*.dll) dans l'espace d'adressage du processus et appelle la fonction DllMain.
cf. (liens MSDN) :
LoadLibrary et DllMain
LoadLibrary retourne un HMODULE (adresse du chargement en mémoire de la DLL).
On utilise ensuite la fonction GetProcAdress() pour obtenir un pointeur de fonction.
Un exemple est disponible sur la MSDN :
http://msdn2.microsoft.com/en-us/library/ms686944.aspx
Merci pour votre aide,
J'ai choisi la deuxième solution mais j'ai un petit problème avec la syntaxe de LoadLibrary().
Merci.
Quel problème de syntaxe ???
tu lui donnes le nom de la dll à charger, c'est simple comme bonjour...
Note : la dll doit se trouver dans le répertoire de l'application, ou dans un des répertoires d uPATH... si tu ne donnes pas le chemin de la dll dans le LoadLibrary().
voici mon code:
et le message d'erreur:Code:
1
2
3
4
5
6
7
8
9
10
11 #include "cm.h" #include <windows.h> #include "stdafx.h" int main(int argc, char* argv[]) { HINSTANCE hInstLibrary; hInstLibrary= LoadLibrary("madll.dll"); return 0; }
Code:
1
2
3
4
5 D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(10) : error C2065: 'HINSTANCE' : undeclared identifier D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(10) : error C2146: syntax error : missing ';' before identifier 'hInstLibrary' D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(10) : error C2065: 'hInstLibrary' : undeclared identifier D:\Program Files\Microsoft Visual Studio\MyProjects\monprojet\monprojet.cpp(11) : error C2065: 'LoadLibrary' : undeclared identifier Error executing cl.exe.
Essaye dans cette ordre :
Code:
1
2
3
4 #include "stdafx.h" #include <windows.h> #include "cm.h"