Dans un de mes projets, j'utilise une application Delphi qui charge dynamiquement une DLL wrapper (exportant des fonctions C-Style) qui à son tour est statiquement liée à un tas de DLL tierces.Bibliothèques infernales (alias DLL Hell)
Cela fonctionne très bien sur mes machines de test, mais sur l'ordinateur de mes clients, il a échoué à initialiser avec un message d'erreur comme "Impossible de trouver entrypoint _somefunction @ 4AKKZ dans TMYlibrary.dll".
Après enquête avec le moniteur de processus de Sysinternals, j'ai réalisé que Windows regarderait fror DLL dans les fenêtres/sytem32 d'abord, donc si une DLL nommée semblable à mon DLL était présent dans system32, fenêtres choisirais celui-là et essayer de trouve mes points d'entrée dans la fonction - ce qui échouerait.
Connaissez-vous une possibilité de changer la DLL de Windows le comportement de recherche?
Informations supplémentaires
- [Mise à jour ] Le fichier .exe est situé au niveau supérieur de l'arborescence des dossiers de l'application.
- Le Wrapper et le 3e parti DLLs ar e tous deux situés dans le sous-/ bin de mes applications dossier
- plate-forme Dev est Windows XP/7, en utilisant VS2008 pour le DLLL et Delphi 2010 pour l'application
Où est le fichier EXE situé? Aussi dans le dossier \ bin? –