Creation et utilisation d ‘une dll (dynamique + statique) sous vc++ 6

Description

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&#8217;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&#8217;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;
}

Codes Sources

A voir également

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.