Erreur 53 : Fichier introuvable

Signaler
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
17 septembre 2007
-
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
17 septembre 2007
-
Bonjour,
j'ai l'erreur suivante : "Erreur 53 : Fichier introuvable : toto.dll" sur l'ordinateur d'un de mes clients et je n'arrive pas a reproduire l'erreur donc j'ai du mal a trouver des pistes pour la corriger. Ce fichier toto.dll est une dll a moi qui contient des fonction que je lance a partir de ma dll VB. Et le message s'affiche dès que j'essaye d'appeler une des fonctions de cette dll.
La dll est bien dans le répertoire de l'application, j'ai mis dans le doute le chemin ds la dll en dur dans le code mais cela n'a rien changé, j'ai vérifier les dépendance de toto.dll et tout les fichiers dont elle a besoin ont l'air d'être présent donc je n'ai plus trop d'idée
le problème est apparement survenu suite a plusieur mise a jour de windows ou de office et j'ai mis toute les mise a jour sur mon ordi mais je n'ai toujours pas l'erreur.
Donc si quelqu'un a des idées de piste a explorer je suis preneur.
merci d'avance !

14 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
1) Tu as bien enregistré cette dll par Regsvr32 ?
2) fait-elle elle-même appel à d'autres Dll ou à des OCX ?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Question bete : si tu as mis le chemin d'accès en dur dans le code, ton client ne sera pas aller mettre la dll ailleurs que dans le répertoire ou elle doit etre ????

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
17 septembre 2007

J'ai fais des patchs avec les fichiers dont j'avais besoin pour être sur qu'il sois placé au bonne endrois donc même si le client les avais déplacé je les ai remi depuis.
Sinon j'ai utilisé Depency Walker pour vérifier que toutes les dépendances de ma dll été bien présente.
Le regsv32 je l'ai fais pour ma dll VB car je sais que sinon cela ne marche pas mais je ne l'ai pas fais pour ma dll "toto" qui elle est faite en c++ et qui n'en a jamais eu besoin pour fonctionner.
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bien sur que si, qu'il te faut l'enregistrer (qu'elle soit écrite en c++ ou non) !
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
"...

Bien sur que si, qu'il te faut l'enregistrer (qu'elle soit écrite en c++ ou non)..."

Ah bon ???

Personellement les dll type api, je n'ai jamais eu besoin de les enregistrée pour qu'elles fonctionnent. Je n'enregistre que les dll ActiveX.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour Casy;

Sur ta machine : oui, tu as sans aucun doute raison (enregistrement automatique à la création)
Mais là : il s'agit d'une dll à utiliser sur une machine où elle n'a pas été créée.


 
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Surtout (et eon ne le sait pas) s'il s'agit d'une dll COM
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
17 septembre 2007

C'est une dll classique, faite sous c++builder et je n'ai jamais eu besoin d'enregistrer ce genre de dll ( d'ailleur je viens d'essayer et l'enregistrement retourne une erreur ) il n'y a que ma dll vb6 que je suis la on est d'accord obligé d'enregistrer.
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
47
jmfmarques
-> une vraie dll (c cpp) n'a pas a être enregistrée !
elle le sont pas la simple déclaration comme une API (ne pas oublier bien sûr, et la dll soit avoir une sortie STD___)
seules les activeX (dll et ocx) doivent être enregistrée (registre)

ArnaudEIC -> dll bien déclarée (comme API)?, et sans chemin??
et pas de mauvaise version? une appli VB cherche la dll (vraie) dans le rep de l'appli, sinon dans rep System32 et enfin dans rep Windows (si pas trouvée entre temps)

++
PCPT [AFCK]
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
17 septembre 2007

La dll est dans le répertoire de l'appli et en plus de ça, avant de charger la dll c++ je rajoute dans le PATH le chemin. Sinon je pense que ma dll est bien déclaré et que c'est bien la bonne version vu qu'elle fonctionne sur d'autre poste.
Le plus étrange c'est que chez ce client le logiciel est sur un serveur et il l'utilise de plusieurs ordinateurs différents. Et il y en a certain qui fonctionne ! comme si une mise a jour windows avais modifier quelque chose sur certain poste mais je ne vois pas trop quoi.
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Assures toi de n'avoir AUCUN doublon de ta dll...
certains s'amusent parfois a placer les dll dans System32, et dans le repertoire de l'appli, ce qui fait que l'on se retrouve avec n dll, pas forcément de la même version qui plus est... pour debugger, c'est sympa ^^

Pas besoin de jouer avec le PATH...
si elle est dans le repertoire de la'ppli, ca roulera.

voici l'ordre opéré par LoadLibrary (la proc qui charge les dll)
- repertoire de l'appli (attention, si sous l'IDE de VB6, sera la dossier de VB6.exe)
- chemins situés dans la PATH

tu peux tenter de regarder ce que renverrai un
LoadLibrary("toto.dll")
chez ton client. Si 0, tu as un soucis...

NB: j'espere que ta delcaration d'API est :
Declare Function MaFonction Lib "Toto.dll" () As Long
et pas :
Declare Function MaFonction Lib "C:\MonDossier\Toto.dll" () As Long

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Attention, si le logiciel est utiliser depuis un serveur, la dll doit etre présente en local sur le pc d'utilisation.

Un executable n'est jamais directement utilisé depuis le serveur. Quand tu le lance depuis un serveur, il est d'abords téléchargé puis executé en mémoire mais en local sur la machine. Il faut donc que toutes les épendances utilisées soient déjà présentes en local sur la machine. Ou alors que l'executable sache ou aller les chercher exactement sur le serveur (chemin du serveur en dur dans le code)

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
17 septembre 2007

Pour les doublons cela fais parti des choses ou j'avais déja eu le souci donc j'ai effectivement regardé. Après je suis pas sur l'ordi donc je ne peux que faire confiance.....
Ensuite j'ai bien déclaré toute mes fonction de la façon suivante : Declare Function MaFonction Lib "Toto.dll" () As Long
Sinon j'ai envoyé hier un fichier test ou je charge toute les librairies dont dépend la DLL qui n'arrive pas a se charger.
j'attend des nouvelles du client pour ça.
Pour ce qui est du fait que cela sois en serveur il faut que je demande a mes collègues car je ne sais pas trop comment tout ça c'est géré, je vous tient au courant.
En tout cas un grand merci de vous pencher autant sur mon problème
Messages postés
13
Date d'inscription
mercredi 28 février 2007
Statut
Membre
Dernière intervention
17 septembre 2007

j'ai trouvé la solution à mon problème. Et la solution se trouvai bien du côté des doublons ! mais pas de ma dll qui refusai de se chargeai mais d'une dll qui été une de ces dépendances. Je fais donc des loadLibrary au lancement de mon appli pour être sur qu'il charge le bon fichier et pas une autre version qui traine sur le poste.
En tout cas merci a tous de m'avoir aidé !
@++