Voila ma premiere source. Certains diront que c'est simple mais moi en tant que débutant du langage c++ j'ai eu du mal à trouver de bons renseignements.
Les documents word se trouvent dans le .zip
Source / Exemple :
1. Création du projet sous VC++ 6
Faire new Project.
Choisir un projet vide puis « Finish ».
2. Création fichier Header (.h)
Créer un nouveau fichier header dans le projet en cours puis entrez les déclarations des fonctions qui seront contenues dans la dll.
Ex : fonctions.h
#include <windows.h>
#ifdef EXEMPLEDLL_EXPORTS
#define EXEMPLEDLL __declspec(dllexport)
#else
#define EXEMPLEDLL __declspec(dllimport)
#endif
extern "C" EXEMPLEDLL void ecrire(char*);
Attention : ici EXEMPLEDLL représente le nom du projet (vérifiez l’orthographe).
3. Création du fichier Source (.cpp)
Créer un nouveau fichier .cpp, puis implementer les fonctions déclarées auiparavant.
Ex : fonctions.cpp
#include <iostream.h>
#include "fonctions.h"
//le DllMain est généré par le compilateur en cas d'absence
extern "C" EXEMPLEDLL void ecrire(char* texte)
{
//Ecriture du texte
cout << texte;
cout.flush();//important
}
4. Compilation
Faire Built\Rebuild All
Nous obtenons : Exempledll.dll.
Arborescence :
5. Utilisation de la dll
Créer un nouveau projet.
Copier la dll précédente dans le même répertoire que le projet.
Principe d’utilisation :
Charger la librairie (Loadlibrary)
Pointage sur la fonction désirée.
Décharger la librairie (Freelibrary)
Ex :
#include "stdafx.h"
#include <windows.h>
#include <iostream.h>
//déclaration du type : pointeur de fonction (il pointera sur "ecrire")
typedef void (*PF) (char*);
int main(int argc, char* argv[])
{
HMODULE hm = 0;
// On charge la librairie en memoire
hm = LoadLibrary("Exempledll");
// On pointe sur la fonction désirée
PF ecrire = (PF)GetProcAddress(hm, "ecrire");
// Utilisation de fonction
ecrire("hello world");
// On decharge la dll de la memoire
FreeLibrary(hm);
return 0;
}
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.