Chargement dynamique d'une dll

Soyez le premier à donner votre avis sur cette source.

Snippet vu 26 751 fois - Téléchargée 32 fois

Contenu du snippet

Se trouve aussi ici: http://www.dev.winsysdev.com/

Voici un exemple de code en C vous permettant de charger dynamiquement une DLL dans votre programme (si par exemple vous n'avez pas le .lib de la DLL).

Dans l'exemple j'ai pris le cas d'une DLL __sdtcall mais vous pouvez bien sur utiliser __cdecl.

Source / Exemple :


// Chargement dynamique d'une DLL
int hModDll;
hModDll = (int)LoadLibrary("madll.dll");
if ((int)hModDll < 32) MessageBox(GetActiveWindow(),"Erreur lors du chargement de la DLL.","Erreur",0);

typedef int (__stdcall* lpFunc1) (protype de la fonction);
lpFunc1 Func1;

Func1 = (lpFunc1) GetProcAddress((HINSTANCE)hModDll, "NomDeLaFonctionDansLaDLL");

int retour;

retour = ((Func1)(mes arguments));

// On décharge la DLL de la mémoire.
FreeLibrary(hModDll );

Conclusion :


Enjoy !

A voir également

Ajouter un commentaire

Commentaires

cs_Kaid
Messages postés
950
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006
-
- Pourquoi tu castes le handle retourné par LoadLibrary() en int ?

- A quoi correspond le '32' dans ton test avec LoadLibrary() ?
Haldwin
Messages postés
77
Date d'inscription
lundi 15 avril 2002
Statut
Membre
Dernière intervention
16 juin 2004
-
Salut,

Je voulais aussi savoir pourquoi tu as casté le Handle en int?

Et puis juste une petite rectification lorsque tu dis dans l'entête: "chargement dynamique d'une Dll" il vaut mieux dire simplement "chargement d'une Dll" car Dll veut dire "dynamic link library".
Mis à part ça, c'est une source utile pour ceux qui ne connaissent pas l'utilisation d'une Dll...
Bon dev,
<<-- H@ldwin -->>
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
Salut,
c'est un bon depart.
Vire le 32, c'est pour test de ShellExecute().
Simplrement:
if((hModDll LoadLibrary("madll.dll")) NULL) ERRATO;
ciao...
Viper31
Messages postés
96
Date d'inscription
mardi 2 avril 2002
Statut
Membre
Dernière intervention
7 août 2005
-
question de curiosité , quel bibliotheque a inclure ? windows.h ?
c'est juste parce que j'en sais rien et que ce bout de code pourrait me servir plus tard , quand j aurai compris le fonctionnement des DLL ;) !!

Tchô
BruNews
Messages postés
21054
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
7 novembre 2014
13 -
#include <windows.h> // TOUJOURS

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.