Création du Dll avec vb [Résolu]

cs_machmacha 97 Messages postés lundi 11 avril 2005Date d'inscription 28 mai 2010 Dernière intervention - 30 mars 2007 à 19:55 - Dernière réponse : cs_andrebernard 406 Messages postés lundi 9 juin 2003Date d'inscription 4 septembre 2013 Dernière intervention
- 23 févr. 2009 à 17:49
salut tous,

j'ai entendu tres souvent sur les fichier Dll et son importance dans la programmation soit en Langage C++ ou Vb.net ou autre, mais je ne c'est pas vraiment son role, et comment les creer et quoi definir dedans :roll: .

quelqu'un peut m'aider ?

merci d'avance
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 30 mars 2007 à 23:15
3
Merci
salut

et google, ne trouve rien ?  Dynamic Link Library !
Pour infos, en vb6, les dlls sont fait à partier de Module de classe.
C'est (en gros) un objet, tu crées une instance de celui-ci, et tu as accés à ses propriétés, méthodes.
Les méthodes public de la classe seront donc accessibles, quand ce sera compilé par vb en tant que Dll, par n'importe quel programme, si celui instancie ta dll.
(ex simple, User32 est une dll, et tu as accès a tout un tas de fonctions, style AnimateWindow, EnableWindow, etc..)

Pour des exemples, télécharge des sources avec des Modules de classes.

Ex de ce que tu peux y trouver avec une de mes classes (sur les actions de la bourse) :

Option Explicit

Private mcolPlacements As New Collection

Property Get LastValueAction() As String
    Dim NewValue As New clsDatas
    
If sContenu = vbNullString Then
    LastValueAction = CotationsValues(Me.CotationsNumber)
Else
    LastValueAction = NewValue.ProcessingDatas(sContenu)
    Set NewValue = Nothing
End If
End Property

Public Sub Delete(ByVal Index As Variant)
   mcolPlacements.Remove Index
End Sub

Property Get NameAction() As String
    NameAction = Config.ReadIniString("ACTION", "Nom")
End Property

Property Let NameAction(new_mNameAction As
String)
    Call Config.WriteIni("ACTION", "Nom", new_mNameAction)
End Property

Property Get CotationsNumber() As Long
    CotationsNumber = UBound(CotationsValues) - 1
End Property

' Moyenne de
l'action, par rapport aux valeurs enregistrées localement
' (ne reflêtera pas forcémment la réalité, si le suivi est pris en
cours de route)
Property Get AverageAction() As Double
        Dim i As Integer
        Dim temp As Double: temp = 0
    
    For i = LBound(CotationsValues) To Me.CotationsNumber
        temp = temp + MyCDbl(CotationsValues(i))
    Next i
    AverageAction = Format(temp / (UBound(CotationsValues) + 1), "#0.00")
End Property

' pourcentage de l'avant dernière donnée à la
dernière
Property Get LastValueEvolutionInPercent() As
String
If Me.CotationsNumber < 2 Then
    LastValueEvolutionInPercent = "ND"
Else
    LastValueEvolutionInPercent = CStr(Percent(MyCDbl(CotationsValues(Me.CotationsNumber - 1)),
MyCDbl(CotationsValues(Me.CotationsNumber))))
End If
End Property

' pourcentage de la
1ere à la dernière donnée
Property Get FirstValueEvolutionInPercent() As
String
If Me.CotationsNumber < 2 Then
    FirstValueEvolutionInPercent = "ND"
Else
    FirstValueEvolutionInPercent = CStr(Percent(MyCDbl(CotationsValues(LBound(CotationsValues) + 1)),
MyCDbl(CotationsValues(Me.CotationsNumber))))
End If
End Property

' date de
téléchargement de la dernière action
Property Get LastDate() As String
    LastDate = CotationsDates(Me.CotationsNumber)
End Property

' Cotation de
l'action la plus Basse
Property Get LowerAction() As String
    Dim i As Integer
    
LowerAction = CotationsValues(LBound(CotationsValues) + 1)
For i = LBound(CotationsValues) + 1 To Me.CotationsNumber
    If Val(CotationsValues(i)) < Val(LowerAction) Then LowerAction =
CotationsValues(i)
Next i
End Property

' Cotation de l'action la plus Haute
Property Get HigherAction() As String
    Dim i As Integer
    
HigherAction = CotationsValues(LBound(CotationsValues))
For i = LBound(CotationsValues) To Me.CotationsNumber
    If Val(CotationsValues(i)) > Val(HigherAction) Then HigherAction =
CotationsValues(i)
Next i
End Property

Public Function Add(ByVal Name As String, ByVal PartNumber As String) As clsPlacement
   Dim NewPlacement As New clsPlacement
   
   With NewPlacement
      .ID = Name
      .NamePlacement = Name
      .PlacementValue = PartNumber
      mcolPlacements.Add NewPlacement, .ID
   End With
   Set Add = NewPlacement
End Function

Public Function Count() As Long
   Count = mcolPlacements.Count
End Function

Public Function Item(ByVal Index As Variant) As clsPlacement
   Set Item = mcolPlacements.Item(Index)
End Function

' NewEnum doit
renvoyer l'interface IUnknown de
' l'énumérateur
d'une collection.

' dans le Menu Outils,
Attibut de procédure, il faut mettre dans les propriétés
' avancées de cette procédure lID à -4 (moins 4) et cocher
~Masquer ce membre~
Public Function NewEnum() As IUnknown
Attribute NewEnum.VB_UserMemId = -4
Attribute NewEnum.VB_MemberFlags = "40"
   Set NewEnum = mcolPlacements.[_NewEnum]
End Function

~ <small>[code.aspx?ID=39466 Mortalino] ~
Colorisation automatique</small>

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--

Merci mortalino 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 99 internautes ce mois-ci

Commenter la réponse de mortalino
daddycool76 56 Messages postés mardi 19 décembre 2006Date d'inscription 2 juillet 2007 Dernière intervention - 30 mars 2007 à 20:36
0
Merci
Bon courage !!!
Commenter la réponse de daddycool76
cs_EBArtSoft 4530 Messages postés dimanche 29 septembre 2002Date d'inscription 23 décembre 2014 Dernière intervention - 31 mars 2007 à 00:24
0
Merci
daddycool76> cassé ! lol

E.B.
Commenter la réponse de cs_EBArtSoft
daddycool76 56 Messages postés mardi 19 décembre 2006Date d'inscription 2 juillet 2007 Dernière intervention - 31 mars 2007 à 07:45
0
Merci
........
Commenter la réponse de daddycool76
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 31 mars 2007 à 08:14
0
Merci
mortalino >> tu confond dll et activeX apparement : une dll est une bibliothèque de fonction, comme l'est user32, elle est bien souvent codée en C, avec des définitions d'export des fonctions. Tu les appelle non pas en créant une instance de classe, mais en les déclarant dans ton code vb (la fameuse instruction Declare) : toutes les API Windows sont codées dans de "vraies" dll.
Les dl activeX, bien que leur extension soit en .dll ne sont pas de véritable dll, ce serait plutôt des bibliothèques d'objets, elles devraient avoir l'extension ocx, ca éviterait les embrouilles entre les termes ! Elles nécéssitent d'être enregistrées dans le registre afin que le système puisse les retrouver, et connaître les objets qu'elles hébergent. Pour utiliser une de leur fonction, il faut créer une instance de la classe, ce qui rend les choses plus compliquées (légérement), et surtout, il y a tout un protocole de communication qui se met en place entre le prog et l'ocx, ce qui rend les chose bien moins rapide qu'un appel à une fonction d'une vraie dll ! Elle sont bien souvent codées en VB car VB apporte la rapidité de développement par rapport au C++ (c'est fastidieux de faire un ocx en C++), et surtout, un activeX est bridé non plus par le langage (enfin, très peu) mais surtout par le protocole de communication entre le programme et l'activeX (il me semble que c'est COM, non ?).

Voilou.

En gros, une dll ca permet d'avoir des bouts de code réutilisable entre plusieurs projets, ce qui augmente la rapidité de développement (une fois qu'un bout de code est testé et qu'on est sûr qu'il marche, on le mets dans une dll, et on le rappelle dans les autres projets), ca permet d'alleger un programme (par exemple, tout mes projets professionnels sont constitué d'un tout petit exe de 32 Ko qui ne fait des appels qu'à des dll, en moyenne une quinzaine => chargement très rapide, occupation mémoire moindre, et surtout, mise à jour du programme simplifiée : je ne mets à jour que les dll qui en ont besoin !). Enfin bref, je pense personnellement qu'une dll ca apporte beaucoup si on doit travailler sur un gros projet ou qu'on doit faire plusieurs projets qui doivent avoir des parties en commun.
Commenter la réponse de cs_DARKSIDIOUS
mortalino 6812 Messages postés vendredi 16 décembre 2005Date d'inscription 21 décembre 2011 Dernière intervention - 31 mars 2007 à 21:43
0
Merci
Voilà qui est clair, merci pour cette précision DKS 

@++

<hr size="2" width="100%" />
  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
<!--
Commenter la réponse de mortalino
ibif 2 Messages postés lundi 24 avril 2006Date d'inscription 12 avril 2007 Dernière intervention - 12 avril 2007 à 18:38
0
Merci
bonjour,
je voudrais savoir si l'on pouvait integrer une dll compilée sous delphi dans visual studio 2005
merci pour votre reponse
Commenter la réponse de ibif
cs_andrebernard 406 Messages postés lundi 9 juin 2003Date d'inscription 4 septembre 2013 Dernière intervention - 23 févr. 2009 à 17:30
0
Merci
Bonjour Darksidious


Je voudrais savoir quel seraient les VB capables de creer des vrais DLL comme le C
Je sais déja que le VB6 n'en est pas capable, j'avais lu qu'un logiciel pouvait modifier le linker ou un truc comme ça, mais je n'en ai pas trouvé plus.

J'ai aussi VB 2003 PRO, en est t'il capable ???
Ou sinon lequel 2005, 2008 version express, pro, standard.

Et surtout si quelqu'un aurait déja créé ce genre de DLL standard avec un VB
Car je lis tout et son contraire sur internet et je suis vraiment perdu.

J'ai acheté le VB2003 PRO pour faire des DLL, et j'apprend que l'on ne peut creer que des bibliotheques de classes et non des DLL, j'suis dégouté

Merci de m'eclairer de vos lumieres
Bonne journée
Commenter la réponse de cs_andrebernard
cs_DARKSIDIOUS 15838 Messages postés jeudi 8 août 2002Date d'inscription 4 mars 2013 Dernière intervention - 23 févr. 2009 à 17:37
0
Merci
Salut,

VB 2003 ne gère pas le langage VB, mais le langage VB.NET : rien à voir !

Déjà qu'avec VB6, on ne pouvait pas faire de "vraies" dll (entends par là des bibliothèques de fonctions), alors je te laisse imaginer avec VB.NET qui est encore plus orienté objet...

Non à ma connaissance, il n'est pas possible de faire de "vraies" dll en VB, il faut passer par du C (pas extrêmement compliqué, et un peu plus rapide que du VB6 compilé). Cependant, comme tu peux le voir, cette discussion date de presque 2 ans, et je suis passé à bien autre chose depuis : je fais encore du VB6, mais je fais surtout du JAVA, qui n'a rien à voir avec VB6, et je m'éclatte bien plus avec JAVA qu'avec ce langage made in cro$oft qui a eu un temps de gloire avant que cro$oft ait jugé que pour ce faire plus de pognon encore il fallait sortir une version incompatible afin qu'un max d'entreprise rachète un Visual Studio... pas bête hein ? Et bien moi en tout cas, ca m'a dégoûté du langage VB, et surtout, de microsoft !
______________________________________
DarK Sidious
Commenter la réponse de cs_DARKSIDIOUS
cs_andrebernard 406 Messages postés lundi 9 juin 2003Date d'inscription 4 septembre 2013 Dernière intervention - 23 févr. 2009 à 17:49
0
Merci
Je suis content de te reparler Dark
Tu as entierement raison.
J'ai exactement le meme degout que toi
J'ai trouvé ça completement dingue qu'il se permette de rompre completement les ponts entre VB et VB.NET
J'ai essayé de faire du VB 2003, mais j'ai rien compris, ils disent que c'est plus simple, et bah dis donc, je ne sais pas ce qu'ils appellent la simplicité.
Le probleme c'est que je n'ai jamais codé en C, et que Visual C++ pour commencer, c'est quand meme pas aussi intuitif que VB6.
J'ai essayé et rien que pour commencer, j'ai mis un temps fou, alors ça m'a un peu dégouté

Donc pour les DLL standards, y'a que le C
Bon bah decidement, j'suis pas pret de pouvoir en faire
Commenter la réponse de cs_andrebernard

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.