OVH Cloud OVH Cloud

Dll Hell

1 réponse
Avatar
Saulot
Bonjour,
Je me trouve face au problème standard du Dll Hell lors de l'empaquetage de
mon application.
J'ai tenté de décocher certaines réferences et de les selectionner à
nouveaux mais rien n'y fait.

J'ai regardé dans le *.vbp et les versions des dll sont pourtant les mêmes
que celles de mes fichiers.
Je ne comprend pas trop.

Si vous avez des suggestions, je suis preneur ^^
Merci de votre aide.

1 réponse

Avatar
Zoury
Salut! :O)

Si vous avez des suggestions, je suis preneur ^^



Tu peux te faire une fonction qui teste les dépendences pour toi... par
exemple tu peux te faire une fonction nommé TestDependencies() qui
instancierais un objet par librairies référencés et qui te renverrais une
erreur lorsqu'un objet ne peut être créer.

Voici un exemple. Le projet contient deux formulaires et un module.

Le premier formulaire [Form1] est le formulaire de départ de l'application
et il contient un DataGrid et utilise la librairie ADO. Il est donc
absolument nécessaire que ces références soient disponibles pour son bon
fonctionnement.

Le deuxième formulaire [frm] est utilisé afin de tester les dépendances.
Pourquoi utilisé un formulaire? Parce qu'il faut absolument un formulaire
pour instancié des contrôles.. :O/

Le module quant à lui sert de point d'entré dans l'application.


Exemple :

Code Module1
'**'
' Ajouter les références/composantes :
' Microsoft ActiveX Data Objects 2.8 Library
' Microsoft DataGrid Control 6.0 (SP5) (OLEDB)
' Module1
Option Explicit

Private Sub Main()

' Essayer d'enregistrer et de désenregistrer
' les dépendences avec regsvr32
'
' Exemple pour enregistrer le datagrid
' regsvr32 c:windowssystem32msdatgrd.ocx
'
' Exemple pour désenregistrer le datagrid
' regsvr32 /u c:windowssystem32msdatgrd.ocx
'
If (CheckDependencies) Then
Call StartApplication
End If

End Sub

Private Function CheckDependencies() As Boolean

Dim frmTest As frmCheckDependencies

Set frmTest = New frmCheckDependencies
Call Load(frmTest)

CheckDependencies = frmTest.CheckDependencies

Call Unload(frmTest)
Set frmTest = Nothing

End Function

Private Sub StartApplication()

Dim frm As Form1
Set frm = New Form1
Call frm.Show

End Sub
'***

Code frmCheckDependencies
'***
' frmCheckDependencies
Option Explicit

Private m_dg As MSDataGridLib.DataGrid

Public Function CheckDependencies() As Boolean

On Error GoTo ErrHandler

Dim sMissingDependencyName As String
Dim rs As ADODB.Recordset

sMissingDependencyName = "Microsoft ActiveX Data Objects 2.8 Library"
Set rs = New ADODB.Recordset

sMissingDependencyName = "Microsoft DataGrid Control 6.0 (SP5) (OLEDB)"
Set m_dg = Me.Controls.Add("MSDataGridLib.DataGrid", "m_dg")
Call Me.Controls.Remove("m_dg")

CheckDependencies = True
Exit Function

ErrHandler:
Call MsgBox("Missing dependency : " & sMissingDependencyName & vbNewLine
& _
"No : " & Err.Number & vbNewLine & _
"Desc : " & Err.Description & vbNewLine & _
"Src : " & Err.Source)
End Function
'***

il n'y a aucun code nécesssaire dans le Form1..

ps : je poste un projet exemple dans le prochain message ...

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/