Création, référencement et appel à une DLL

Signaler
Messages postés
188
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
19 novembre 2011
-
Messages postés
188
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
19 novembre 2011
-
Bonjour à tous,

Si je bidouillais un peu en VB4, je nage assez en VB 2005... Surtout pour une option dont je ne me suis jamais servi : la création d'une DLL puis son utilisation.

Comment la créer ? Si j'ai bien compris vos différents spots (merci encore à tous) une DLL est une fonction ou un sub, voire plusieurs(es), que l'on compile en DLL au lieu de EXE. Si c'est faux, soyez assez aimables de me reprendre.

Oui, mais après... Comment l'intégrer à mon script. Je suppose que si, dans cette DLL, il y a un sub 'DonneLeCarré', il suffira de l'appeler pour que cela fonctionne comme si le sub était dans le script, avec la même transparence. Donc il doit il y avoir un truc. Il doit falloir la déclarer (la DLL) au niveau du module, non ? Mais comment ?

Je me doute que cette question a dû être posée moult fois, et j'ai lu de très nombreux spots, mais je n'y comprends rien, pas assez compétent. Alors pour lire les scripts mis à dispo...

Si vous pouviez m'aider ce serait sympa.

Cordialement,

Whombat.

Prédire l'avenir est particulièrement aléatoire, 
surtout lorsqu'il s'agit du futur.

4 réponses

Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
1
Salut,

Alors tout d'abord, une DLL est une bibliothèque de classes.
Pour en créer une, sous VS : Fichier > Nouveau Projet > Bibliothèque de Classes.

A l'intérieur de celle-ci, tu ne peux pas avoir d'interface (formulaire), mais uniquement des classes, et des namespaces (espaces de noms).
Je ne connais pas la définition exacte d'un espace de nom mais c'est une sorte de "séparateur" de classes, comme : System.Data.OleDB (System est un namespace, Data est un namespace et OleDb aussi). Un espace de nom contient plusieurs classes (par exemple System.Data.OleDb.OleDbCommand, System.Data.OleDb.OleDbDataAdapter, etc).

=> Pour info, sous VS tu repères les espaces de noms grâce à l'icone {} devant leur nom (essaies de tapper "System" et tu verras apparaître une liste avec {} System). Je suis dur à me faire comprendre hein :p

Donc dans ta DLL tu pourras avoir 15 classes par exemple.
Après, très important : une fois compilée tu ne pourras pas la réouvrir pour la retravailler, il faut donc bien garder le projet sous VS et non uniquement la DLL !

Quand tu as obtenu ta DLL tu peux l'importer.. dans n'importe quel projet.. avec n'importe quel langage (C, C++, C#, etc etc !).

Imaginons que tu veuilles inclure ta DLL dans un autre projet sous VS : Projet > Ajouter une référence > Onglet Parcourir, et tu vas chercher ta DLL.
Après tu auras accès à ta DLL. Si elle s'appelle MaDLL par exemple, tu feras : Dim MaVariable As MaDLL.MaClasse1 par exemple ! Ainsi tu pourras accéder à ses méthodes !

Tu peux également utiliser les API Windows (qui sont dans les DLL Windows..).
Pour ce, tu fais : Private Declare Function <Nom de la fonction> Lib "<nom de la DLL>" () As <type de retour>

=> Je te conseilles de télécharger ApiViewer, qui te permet de voir les possibilités des DLL windows..

En espérant t'avoir un peu éclairci ;)
Messages postés
188
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
19 novembre 2011

Oui, et merci de ta super réponse.

Donc j'avais faux... Pour moi, c'était une compilation de sub et/ou de fonctions... Ce que je recherche d'ailleurs pour alléger mes exe, un 'truc(s)' externe qui fonctionnerait comme tu me l'a expliqué pour les DLLs. On l'appelle et on s'en sert comme s'il faisait parti du script. Mais, ça n'existe pas je suppose ?

Je suis (suivre) mal. Déclarer une (des) classe(s), quel intérêt de mettre cela en DLL ? Mais peut-être que je n'ai rien compris. Pour moi une classe c'est comme les déclarations des feuilles CSS, un nom d'objet et on décline ses qualités, par exemple pour la Classe Maison.Salon.Porte:

Maison.Salon.Porte.Matériau = bois
Maison.Salon.Porte.Taille = 2,20
Maison.Salon.Porte.Couleur1 = Hêtre
Maison.Salon.Porte.Poignée = Classique
Etc...

Cela doit être un peu plus subtil. Je suis très loin de la vérité ?

J'ai bien un bouquin, mais le chapitre sur les classes, ouf..., indigeste ! Et vite oublié dans un placard malheureusement. J'ai aussi téléchargé VS 2008 Express et j'ai commencé, une cinquantaine de pages, le tuto. Ils ont fait un sacré effort, j'ai tout compris... Je vais bien sûr finir ce tuto mais il est de base, je crois, après il faudra se débrouiller seul.

De base ou pas, il est accessible. Ce qui fait, et tu viens de la démontrer, qu'on peut expliquer les choses, même si elles sont très compliquées, en adaptant son langage à celui du récepteur.

Cordialement,

Whombat.

Prédire l'avenir est particulièrement aléatoire, 
surtout lorsqu'il s'agit du futur.
Messages postés
169
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
17 août 2010
1
L'avantage des DLL est de pouvoir regrouper plusieurs méthodes (méthode = sub, fonction) et de pouvoir :

- Les réutiliser dans tes autres projets sans avoir à tout te retaper
- Alléger le code
- Utiliser les méthodes avec des projets codés dans d'autres langages

Au début je ne comprenais rien aux classes.. jusqu'au jour où j'ai trouvé THE tuto, vraiment complet, très très très bien expliqué, très bien fait, portant sur vraiment beaucoup d'aspects du VB : http://plasserre.developpez.com/cours/vb-net/

La partie sur les classes se trouve ici : http:///plasserre.developpez.com/cours/vb-net/?page=classes#LVI

Je te conseilles de le regarder il t'aidera beaucoup à comprendre les bases de la prog.

Sinon, je ne connais pas le VBScript (enfin je sais que c'est codé en VB mais je l'ai jamais utilisé). Donc je ne pourrai pas t'aider énormément sur ce sujet :s

Si tu as des questions dans le futur n'hésites pas à me PM ;)
Messages postés
188
Date d'inscription
mercredi 12 octobre 2005
Statut
Membre
Dernière intervention
19 novembre 2011

Merci infiniment pour ton aide. Inutile de te dire que je vais me ruer sur le tuto.

Je te tiendrai informé, ne serait-ce que par correction.

Merci encore.

Cordialement,

Whombat.

Prédire l'avenir est particulièrement aléatoire, 
surtout lorsqu'il s'agit du futur.