begin process at 2012 05 27 15:14:29
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Astuces

 > CREATION ET UTILISATION D ‘UNE DLL (DYNAMIQUE + STATIQUE) SOUS VC++ 6

CREATION ET UTILISATION D ‘UNE DLL (DYNAMIQUE + STATIQUE) SOUS VC++ 6


 Information sur la source

Note :
7 / 10 - par 1 personne
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Astuces Classé sous :créer, dll, dynamique, statisque Niveau :Débutant Date de création :16/02/2005 Vu / téléchargé :9 846 / 802

Auteur : bundy318

Ecrire un message privé
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 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

  • 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;
  • }
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;
}



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • Cr,ation et utilisation d'une dll (dynamique) sous VC++.docTélécharger ce fichier [Réservé aux membres club]69 632 octets
  • Cr,ation et utilisation d'une dll (statique) sous VC++.docTélécharger ce fichier [Réservé aux membres club]30 720 octets

Télécharger le zip


 Sources de la même categorie

Source avec Zip SCHEDULER RR FIFO par yvesB87
Source avec Zip ALGORITHMES RÉCURSIFS VS ALGORITHMES ITÉRATIFS par yvesB87
Source avec Zip Source avec une capture C++ FORMAT D'IMAGE AVEC QT par pop70
Source avec une capture EXEMPLE DE POINTEURS DE FONCTION par pop70
Source avec Zip Source avec une capture [C++] CLASS REGISTER par Miwik

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture SOUS-CLASSEMENT DE FENÊTRE D'UN AUTRE PROCESS PAR INJECTION ... par racpp
Source avec Zip Source avec une capture SERVICE WINDOWS DANS UNE DLL LANCÉ PAR SVCHOST.EXE par racpp
Source avec Zip Source avec une capture ALGORITHME DE CRYPTAGE/DECRYPTAGE par besilent
Source avec Zip CRÉATION D'UNE DLL ET SON UTILISATION (DEVC 4.9.8.0) par ibroman
CHARGEMENT DYNAMIQUE D'UNE DLL par Arnotic

Commentaires et avis

Commentaire de BruNews le 16/02/2005 14:25:09 administrateur CS

Suffisait de mettre 'DLL' en critere de recherche et de regler sur 'source', la recherche te sortait au moins 10 pages d'exemples.

Commentaire de minet03 le 18/02/2005 22:12:50

de plus, j'essaye de suivre ton "tuto" mais l'utilisation de DLL n'est pas complet ou faux. J'ai refait exactement ce qu'il y a de marqué, mais ça ne marche pas.

Commentaire de bundy318 le 14/03/2005 15:15:16

Et pourtant c clair et simple...

Commentaire de NeoUmbrella le 07/06/2005 21:08:03

Si, ca marche, merci a toi pour cette explication.

Commentaire de cm16 le 02/01/2006 16:11:15

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.

Commentaire de fahim le 12/04/2006 11:41:47

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.

Commentaire de bundy318 le 15/04/2006 14:09:41

Salut,

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

a+

Commentaire de mackhai le 25/07/2006 17:03:07

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

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Créer une library dynamique (.dll) [ par Zestyr ] Salut, Est-il possible de compiler une library dynamique (.dll) multilangage ? Possible en C ? Merci, Cordialement zestyr La conerie est humaine DialogBox Dynamique [ par Mr_Coinche ] Bonjour, Je voudrais créer un DialogBox Dynamique (avec l'api windows), à partir d'un fichier de configuration. Je dois pouvoir paramétrer, le texte c++ -> objet -> dll ->Excel [ par outferdine ] Bonjour Pour commencer je vient de créer un classe de pricing des options européenne avec visual studio c++ 2010 et j'ai arrivé à acceder aux fonction Creation d'objet dynamique (FORM) [ par katerson ] Salut à tous, Je travaille en ce moment sur Visual Studio et j'utilise les Forms pour mon application. Je viens de créer une arborescence (TreeView créer une dll pour utiliser l'ASIO [ par ccinfonews ] bonjour je souhaites créer une dll pour utiliser l'ASIO du Steinberg SDK sous VB apparement le kit a été concu sous forme de classes la première chos Créer dll en C++ [ par ANDRIAMIADANARIVO ] Pourquoi lorsqu'on compile le fichier .cpp ci-dessous, il y a une erreur qu'il faudra mettre ";" devant "void" et que "cout" n'est pas déclaré.#includ tableau dynamique de structure plusieurs structure différente en C ? [ par Nico_35136 ] Bonjour a tous, Voila je débute dans l'allocation dynamique en C voici mon problème. Je possédé 5 structure de taille différentes qui vont contenir interface dynamique [ par emilia123 ] Bonjour. je souhaite dans le but de créer un chat en C++ sous builder, de créer dynamqieument l'interface. Mais je ne sais pas comment gerer les évène heritage et dll dynamique [ par dune ] Bonjour,je programme un gestionnaire de plugins et certaines fonctions et class doivent etre utilisees dans chaque plugin. Je mets donc mes fonctions Creation de dll [ par dindin2000 ] Bonjour à tous, Depuis déjà plusieurs semaines, j'essais de créer une dll sous visual studio6 (en cpp), et de l'utiliser sous builder C++5. Mhum, je v


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,076 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales