fr en es
dsqds
Convertir en PDF  Version Vocale  Imprimer 
 
0 €
30 €
hotline : 08 92 23 03 22
Bonjour Clint, nous sommes le 05 septembre 2010, il est 06:39
    Chargement en cours...
Chargement en cours...
Rechercher
  Accueil Cours Challenge Membres Aide  
 
Navigation
 
Cours (84 articles)
 
Boite à Outils
=> Site World of Crack » Créer une DLL et l'importé

Cet article a été consulté 519 fois.
Créer une DLL et l'importé :
Note de l'article : 1 1 1 0 0

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é :

  1. Main.cpp
  2. 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 !

 

Capture code blocks


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.

capture_vcc_import

 

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

capture_vcc_dll

 

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 License Creative Commons CC0 (zero)
Signature de l'auteur : « trop de paroles noient la vérité »

Creative Commons License
Copyright © 2010 www.World-of-Crack.fr Tous Droits Réservés - Some Rights Reserved - Site web créer par Clint Mourlevat le 27 novembre 2009