Cette article a été consulté 7167 fois.
Nous allons créer un simple DLL en C++ qui affiche un message dans une boîte de dialogue (avec la fonction MessageBoxA) puis nous allons l'importer dans un projet en C#.
Le but étant de découvrir l'utilisation d'une DLL et comment en utiliser une dans un projet !
Création de la DLL avec Code Blocks :
Créer un nouveau projet "Dynamic Link Library" que vous nommerez "Dll export".
Résultat : 2 fichiers vont être generé :
- Main.cpp
- Main.h
Contenu de Main.cpp :
#include "main.h"
// a sample exported function
void DLL_EXPORT SomeFunction(const LPCSTR sometext)
{
MessageBoxA(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION);
}
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
switch (fdwReason)
{
case DLL_PROCESS_ATTACH:
// attach to process
// return FALSE to fail DLL load
break;
case DLL_PROCESS_DETACH:
// detach from process
break;
case DLL_THREAD_ATTACH:
// attach to thread
break;
case DLL_THREAD_DETACH:
// detach from thread
break;
}
return TRUE; // succesful
}
Contenu de Main.h :
#ifndef __MAIN_H__
#define __MAIN_H__
#include
/* To use this exported function of dll, include this header
* in your project.
*/
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"
{
#endif
void DLL_EXPORT SomeFunction(const LPCSTR sometext);
#ifdef __cplusplus
}
#endif
#endif // __MAIN_H__
Le code source contient déja la fonction "SomeFunction()" qui affiche juste un message dans une boîte de dialogue :
void DLL_EXPORT SomeFunction(const LPCSTR sometext)
{
MessageBoxA(0, sometext, "DLL Message", MB_OK | MB_ICONINFORMATION);
}
Donc : Pour afficher un message en utilisant cette DLL, il suffit juste d'appeler la fonction SomeFunction() et d'indiquer le contenu (const LPCSTR sometext)!
Vous pouvez maintenant compiler la DLL ! et la garder sous la main pour l'importation !

Importation de la DLL sous Visual C# Express Edition
Créer un nouveau projet "Console" avec Visual C# Express Edition, que vous nommerez "Dll Import".
Il est nécessaire d'ajouter la réference "System.Runtime.InteropServices" pour pouvoir importer une Dll.

Maintenant taper ce code dans le nouveau projet C# mais ne compiler pas !

Avant de compiler il faut copier la DLL conçu dans le dossier "release" du projet "Import DLL", comme ceci :

Maintenant compiler le programme "ImportDLL", et normalement un message va s'afficher, il provient de la fonction "MessageBoxA" de la DLL.
Article écrit par
Clint mourlevat le 03/03/2010, sous license

Signature de l'auteur : « trop de paroles noient la vérité »