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

Soyez le premier à donner votre avis sur cette source.

Vue 11 447 fois - Téléchargée 893 fois

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

Ajouter un commentaire

Commentaires

mackhai
Messages postés
5
Date d'inscription
dimanche 21 décembre 2003
Statut
Membre
Dernière intervention
25 juillet 2006
-
C:\DEV\DllExample\dll02\fonction.cpp(7) : error C2491: 'ecrire' : definition of dllimport function not allowed
Error executing cl.exe.

j'ai ça comme erreur, pourtant j'ai suivie à la lettre tes instructions
bundy318
Messages postés
19
Date d'inscription
samedi 8 mai 2004
Statut
Membre
Dernière intervention
8 mai 2007
-
Salut,

J'ai jamais utilisé des structures contenues dans des dll.
Désolé de ne pas pouvoir t'aider.

a+
cs_fahim
Messages postés
23
Date d'inscription
samedi 8 mai 2004
Statut
Membre
Dernière intervention
5 juin 2006
-
Merci pour l'exemple, mais peux-tu m'expliquer comment charger la définition d'une structure de données,par exemple, défine dans une DLL.
cm16
Messages postés
7
Date d'inscription
lundi 28 novembre 2005
Statut
Membre
Dernière intervention
7 février 2008
-
Très bonnes explications. Tout l'art dans les explications c'est de pouvoir se mettre au niveau de ceux qui les lisent.
Ce qui n'est pas le cas de tous les Tutaux présents sur ce site.
Il faut savoir, que le hobbi du déveleppement n'est pas restreint à ceux qui ont fait ou pu faire de hautes études et que parmis les développeurs ou ceux qui souhaitent le devenir, il y a en a qui n'ont pas eu la chance d'étudier (Manque de moyen / Famille nombreuse)
Alors encore merci et continus ainsi.
cs_NeoUmbrella
Messages postés
104
Date d'inscription
vendredi 5 novembre 2004
Statut
Membre
Dernière intervention
11 septembre 2008
-
Si, ca marche, merci a toi pour cette explication.

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.