Modifier chemin d'accès à une dll

Signaler
Messages postés
5
Date d'inscription
jeudi 7 avril 2011
Statut
Membre
Dernière intervention
18 mai 2011
-
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
-
Bonjour,
Je débute en VB5. Je viens de finir mon application et je souhaites lancer l'exe sur une autre machine (que celle qui a servi à développer).
J'ai un message d'erreur comme quoi le fichier vb5fr.dll est manquant.

Ma question : est-il possible de mettre cette dll dans le même répertoire que l'exe et de modifier le chemin d'accès (dans les propriétés du projet) pour que la dll ne soit pas cherchée dans C:\windows\system32 ?
Si c'est possible, comment faire ?

Sinon, j'avais pensé à faire un setup mais je ne trouve pas l'assistant déploiment et empaquettage sur mon PC. De plus,mon appli est succeptible d'être lancée sur du NT et du XP (donc chemin d'accès dll différents). Une idée ?

Merci d'avance

10 réponses

Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
Bonjour,

En théorie il est possible de mettre les DLL où l'on veut mais ce n'est pas recommandé.

Je te conseille de la mettre dans Windows\System32 cela te simplifiera la vie.

Quant à l'assistant Empaquetage et déploiement, je ne sais pas s'il était livré avec VB5 (je dis bien CINQ et non SIX), mais il est à oublier. A la place, utilises InnoSetup et son compère ISTools, gratuit mais sans problèmes.

Tu trouveras un tutoriel sur ce site ainsi qu'un lien pour le télécharger.


Calade
Messages postés
5
Date d'inscription
jeudi 7 avril 2011
Statut
Membre
Dernière intervention
18 mai 2011

Tout d'abord merci de cette réponse rapide.

J'ai pris note de ton conseil de mettre la dll dans Windows\System32,ceci dit si je souhaites quand même mettre la dll ailleurs, comment je peux faire ?

Je préfère cette solution au setup ou à la copie dans Windows\System32, car l'idée serait de faire un peu comme un exe portable (sans rien à installer) on clic sur l'exe et c'est parti.

a priori cette dll ne sera utilisée que par mon appli (sinon elle serait déjà présente sur le poste).
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
a priori cette dll ne sera utilisée que par mon appli (sinon elle serait déjà présente sur le poste)


Ce n'est pas une preuve car les applis VB5 ne doivent pas courir les PC vu leur âge.

Quant à l'idée de l'exe portable, elle serait bonne mais oublie, VB n'a pas été conçu pour ça. Que ce soit VB5, VB6 et certainement .NET, il y a des dépendances qui doivent être enregistrées et dont le chemin d'accès doit être connu du système, ce qui nécessite un Setup.


Calade
Messages postés
5
Date d'inscription
jeudi 7 avril 2011
Statut
Membre
Dernière intervention
18 mai 2011

Bon je vais voir pour faire un setup avec les logiciels que tu m'as indiqué.

Ceci dit, juste pour information ; j'ai lancé mon appli depuis un périphérique externe, une fois vb5fr.dll dans windows\system, elle s'execute sans problème. Je dois avoir que peu de dépendance (vu que l'appli est destinée à NT, j'ai utilisé les choses les plus basiques possibles)

merci

bonne journée
Messages postés
1207
Date d'inscription
dimanche 20 avril 2003
Statut
Membre
Dernière intervention
4 juin 2016
9
Tu as au minimum 4/5 DLL dépendantes qu'il te faura rajouté à la main à ton script d'installation.

Va sur le site d'InnoSetup, il raconte exactement ce qu'il faut faire.


Calade
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
oui, dans le repertoire de l'exe, sans soucis.

c'est Windows qui donne indique ou trouver les Dll...

si définit, repertoire dll (voir SetDllDirectory)
repertoire de l'exe
repertoire du %PATH% (System32, etc.)



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
5
Date d'inscription
jeudi 7 avril 2011
Statut
Membre
Dernière intervention
18 mai 2011

bonjour Renfield,
Donc je peux mettre la dll dans le répertoire de l'exe.
L'appli va chercher dedans toute seule, ou il faut que je lui définisse quelque chose ?
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
non, rien de particulier a faire...

derrière sera appelé l'API LoadLibrary, que Windows gérera comme il se doit


Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
Messages postés
5
Date d'inscription
jeudi 7 avril 2011
Statut
Membre
Dernière intervention
18 mai 2011

Désolée ,je débute en VB.
j'ai bien défini l'API :
Private Declare Function LoadLibrary Lib "kernel32.dll" Alias "LoadLibraryA" (ByVal lpPathName As String) As Boolean

mais je ne sais pas trop où appeler cette fonction. A savoir mon projet est de type executable standard, je n'ai pas de procedure main.
J'ai essayé de l'appeler dans le form_load() de ma première fenetre :
LoadLibrary (".\Vb5fr.dll") mais ca ne fonctionne pas.
Et si je le mets en dehors d'une procedure pour que ce soit genre "global" j'ai une erreur de compilation.

Je ne sais pas comment faire.
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
68
Pas a toi de faire cet appel, je donnais cet info, mais c'est VB et Windows qui jouent a cela

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp