Malheureusement, cela va être une question assez ouverte, mais je suis à bout de nerfs et je pensais que je voudrais demander conseil.Module LoadLibrary introuvable - DLL Hell After Office 2007 Installer
Il s'agit d'une application Visual C++ MFC utilisant Visual Studio 2008 SP1. Un collègue et moi avions Office 2007 installé et nous avons tous les deux eu des problèmes de chargement DLL étranges avec notre application depuis. Plus précisément, LoadLibrary ne parvient pas à charger l'une de nos DLL (la première qu'il charge) et renvoie le code d'erreur 126 (module introuvable). Ce qui est vraiment étrange, c'est que si je lance l'exécutable depuis l'explorateur Windows, ça fonctionne très bien.
Je pris les mesures habituelles pour diagnostiquer les problèmes:
- Vérifiez que le fichier existe et que le répertoire de travail courant a été braqué sur lui.
- Exécutez le programme de surveillance des dépendances et vérifiez que les dépendances se chargent correctement. Ils sont tous en train de charger, sauf ceux this question qui disent ok.
- Expérimentez avec le chargement de DLL différentes au même emplacement dans le code. Certaines des simples DLL «stub» réussissent, mais la plupart d'entre elles échouent.
- Expérimentez avec le chargement des DLL qui échouent à partir d'applications de test distinctes - dans une application de console vide et une application MFC barebone, toutes les DLL se chargent bien!
- Essayez de charger les DLL avec LoadLibraryEx et l'indicateur LOAD_LIBRARY_AS_DATAFILE, ce qui réussit mais ne nous amène pas très loin, sauf pour signaler qu'il s'agit probablement d'un problème de dépendance.
Je ne sais vraiment pas quoi faire d'autre à ce stade. Comme je l'ai dit, Office 2007 est un point commun dans notre problème mais je ne sais pas quel genre de problèmes il pourrait créer. Je ne sais vraiment pas quelles sont les étapes à suivre. Des idées? Edit: Je suis assez sûr que le répertoire de travail actuel n'est pas dans le chemin de la DLL pour une raison quelconque. Il semble que les DLL qui échouent sont celles qui ont besoin d'autres DLL. Si j'active la sortie de débogage Loader Snaps, le répertoire de travail en cours ne semble pas se trouver dans le chemin de chargement de la DLL. Une idée de ce qui pourrait causer cela? Edit2: La compilation en cours a déchargé l'exécutable dans un répertoire autre que le répertoire de travail. Pour une raison quelconque, lorsque j'ai essayé de charger une DLL qui a ensuite essayé de charger une autre DLL, le répertoire de travail en cours n'est plus recherché. En mettant l'exécutable dans le répertoire avec toutes les DLL que j'essaye de charger, les problèmes disparaissent. Sur la base de tout cela, et de la sortie par les accrochages du chargeur, je suis sûr à 98% que c'est un bogue bizarre de Visual Studio et je vais simplement devoir le contourner.
C'est une estimation raisonnable basée sur les informations que j'ai fournies à l'origine, mais j'ai édité plus d'informations dans ces points à une sorte de mélange de chemin de chargement/bogue. –