web-dev-qa-db-fra.com

c ++ / cli DLL échoue sous Win 8.1

j'ai écrit une DLL Win32/net, cela fonctionne bien sous Win XP, Win7 et 8 mais sous Win 8.1, il échoue.

Dépendance Walker dit: API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL introuvable (user32.dll les appellera)

Google signifie que MS a modifié certaines DLL système dans la version 8.1 (et a ignoré la compatibilité), de sorte que de nombreux programmes ont le même problème.

Liste complète avec "fichier introuvable":

API-MS-WIN-CORE-KERNEL32-PRIVATE-L1-1-1.DLL
API-MS-WIN-CORE-PRIVATEPROFILE-L1-1-1.DLL
MSVCR120.DLL
API-MS-WIN-CORE-SHUTDOWN-L1-1-1.DLL
API-MS-WIN-SERVICE-PRIVATE-L1-1-1.DLL
EXT-MS-WIN-NTUSER-UICONTEXT-EXT-L1-1-0.DLL
IESHIMS.DLL

Quelqu'un at-il une idée de comment résoudre ce problème?

18
user3600403

Il ne faut pas se fier à l'analyse statique de Dependency Walker. Le fait que Dependency Walker signale des problèmes avec ces DLL en fonction de son analyse statique ne signifie pas que c'est bien votre problème. Il est normal que des exécutables parfaitement fins signalent des problèmes comme vous le décrivez sous analyse statique, tout en s'exécutant parfaitement.

En ce moment, je regarde l'évaluation de ma demande par Dependency Walker et je vois exactement la même liste de fichiers soi-disant problématiques que vous. Mais l'application fonctionne parfaitement bien. Autrement dit, vous regardez un faux positif.

Microsoft n'a certainement pas ignoré la compatibilité lors de la mise à niveau des systèmes d'exploitation. Au contraire, il va à des longueurs extraordinaires pour maintenir une bonne compatibilité.

Si vous souhaitez utiliser Dependency Walker pour déboguer les problèmes de dépendance avec les DLL natives, vous devez vraiment l'utiliser en mode dynamique, à l'aide du menu Profil. Cela vous indiquera quelle dépendance ne parvient pas à se charger lors de l'exécution, si tel est bien votre problème. Mais selon où se situe exactement l'équilibre entre géré et non géré, il se peut que Dependency Walker ne soit pas le bon outil pour le travail.

Et votre problème peut ne pas être un problème avec les dépendances natives. La première étape consiste à diagnostiquer exactement quel est le problème. Cela dépasse le cadre de cette question, car nous n'avons aucun détail sur les erreurs que vous rencontrez.

19
David Heffernan