web-dev-qa-db-fra.com

Windows 7, 64 bits, DLL problèmes

J'ai un problème avec notre exécutable. J'exécute cet exécutable C++ 32 bits sur mon boîtier de développement Windows 7 64 bits qui contient également toutes ces applications Microsoft (Visual Studio 2008 + 2010, TFS, SDK, Microsoft Office) ... Et il est toujours en cours d'exécution ça va.

Maintenant, j'ai reçu l'installation cliente du même programme et on m'a demandé de le tester avec une installation propre de Windows 7. Ainsi, j’ai obtenu un VMware Windows 7 64 bits sous Windows 7 et je l’ai mis à jour sous Windows 7 SP 1 (la même version que celle de ma boîte de développement est optimisée) . fonctionne avec la boîte VMware (30 jours d’essai).

Le x86 Dependency Walker me dit que les fichiers DLL suivants sont manquants:

  • API-MS-WIN-CORE-COM-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ERROR-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-ROBUFFER-L1-1-0.DLL
  • API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL
  • API-MS-WIN-SHCORE-SCALING-L1-1-0.DLL
  • DCOMP.DLL
  • GPSVC.DLL
  • IESHIMS.DLL

J'ai cherché sur Google ces fichiers API-MS-WIN -... DLL et découvert qu'ils devraient déjà faire partie de Windows 7 (certains sites prétendent toutefois appartenir à Windows 8 et à Windows Server 2012).

J'ai déjà essayé les correctifs suggérés que j'ai trouvés, qui sont:

  • en cours d'exécution 'sfc/scannow'
  • installation des exécutables de Visual Studio 2008 SP1

Mais cela n'a rien résolu. :-(

Note latérale: Ma boîte de développement ne les a pas non plus et ne semble pas en avoir besoin. Par exemple, le fichier user32.dll de ma boîte ne fait pas le lien avec l’un de ceux-ci, contrairement à l’installation sur VMware.

Toute idée sur la façon de résoudre ce problème? J'ai essayé de trouver un téléchargement/correctif approprié sur les pages Microsoft, mais j’ai échoué.


Après avoir résolu mon problème, je voulais signaler ce que j'ai découvert et je ne peux pas poster ceci comme réponse car la question a été fermée.

En fait, tous les fichiers DLL signalés manquants par l'outil Dependency Walker, à savoir ceux

* API-MS-WIN-CORE-...

les fichiers type DLL ne faisaient pas partie du problème.

Dans mon cas, l'enregistrement de trois fichiers OCX était manquant et après cela, tout allait bien, mais l'outil Dependency Walker répertoriait toujours les mêmes DLL fichiers qu'auparavant, même lorsque le programme fonctionnait correctement.

L'essentiel: comme quelqu'un d'autre l'a dit, l'outil est un peu démodé à présent et ne fonctionne pas toujours correctement avec un système d'exploitation plus récent. Gardez donc un œil ouvert et ne vous laissez pas induire en erreur en manquant 'API-MS-WIN-CORE-COM-L1-1-0.DLL',… le problème est probablement entièrement ailleurs.

250
tlvs

Ce problème est lié à l'absence du "package redistribuable" de Visual Studio. Il n’est pas évident de savoir lequel est manquant en fonction de la marche des dépendances, mais j’essaierai d’abord celle qui correspond à la version de votre compilateur pour vérifier si tout fonctionne correctement:

Visual Studio 2015

Visual Studio 2013

Visual Studio 2010

Visual Studio 2008

J'ai rencontré ce problème parce que j'utilise les compilateurs Visual Studio, mais pas l'environnement complet Visual Studio.


Allez oser injecter un nouveau lien ici: Les derniers téléchargements Visual C++ pris en charge . _ {Stein Åsmul, 29.11.2018.

56
meawoppl

Moi aussi, je viens de résoudre le même problème avec C++ Qt5 et W7 64 bits avec MSCVC 2012.

Au début, je pensais que c’était un problème MSVC/windows dll, mais comme BorisP l’a dit, le problème était lié aux dépendances de mon projet. La clé est " Comment connaître les dépendances de votre projet dans Qt5? ".

Comme je n’ai trouvé aucun moyen de le savoir clairement (Dependency Wolker ne m’aide pas beaucoup ...), j’ai suivi la "procédure inverse" qui ne prend pas plus de 5 minutes et évite beaucoup de maux de tête avec les dépendances Dll :

  1. Compilez votre projet et placez le fichier exécutable dans un dossier vide: myproject.exe
  2. Essayez de l'exécuter, il va récupérer une erreur (dll manquantes ...).
  3. Maintenant, copiez toutes les dll de Qt (dans mon cas, elles se trouvaient dans C:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin) dans ce dossier.
  4. Essayez d'exécuter à nouveau, cela fonctionnera probablement bien.
  5. Commencez à supprimer progressivement et essayez à chaque fois que votre exécutable fonctionne toujours, en essayant de laisser le minimum de DLL requis.

Lorsque vous avez toutes les DLL dans le même dossier, il est plus facile de trouver celles qui ne sont pas valides (XML, webkit, etc.), cette méthode ne prend donc pas plus de cinq minutes.

19
Inejose

Je viens de résoudre le même problème. 

Dependency Walker est trompeur dans ce cas et m'a fait perdre du temps. Ainsi, la liste des dll "manquantes" du premier article n'est pas utile, vous pouvez probablement l'ignorer.

La solution consiste à rechercher les références que votre projet appelle et à vérifier si elles sont réellement installées sur le serveur. 

@Ben Brammer, peu importe les 3 fichiers .ocx manquants, car ils ne le sont que pour le projet de Leo T Abraham. Votre projet appelle probablement d'autres DLL.

Dans mon cas, il ne s’agissait pas de 3 fichiers .ocx, mais il manquait le connecteur MySQL. Après l'installation de MySQL Connector for .Net sur le serveur, le problème a disparu.

En résumé, la solution est la suivante: vérifiez si toutes vos références de projet sont présentes.

À votre santé

16
BorisP

Comme mentionné, DCOMP fait partie des redistribuables VC++ (implémentant le runtime OpenMP) et constitue le seul composant réellement manquant. Tout le reste est faux.

Plus précisément, API-MS-WIN-XXXX.DLL sont des API-sets - un niveau supplémentaire d'indirection des appels introduit progressivement depuis Windows 7. Le développement du promeneur de dépendances semble s'être arrêté bien avant cela, et il peut ' t gérer correctement les ensembles d’API.

Donc, rien à craindre là-bas. Vous ne manquez plus rien.

Une meilleure alternative pour rechercher les DLL manquantes réellement nécessaires (si tel est en fait le problème) consiste à exécuter ProcessMonitor et à revenir en arrière depuis l'échec, en recherchant des séquences de sondes ayant échoué pour un DLL spécifique dans tout le chemin système. .

11
Ofek Shilon

J'ai aussi rencontré ce problème, mais la solution qui semble être un fil conducteur ici, et que j'ai vu ailleurs sur le Web, est "réinstaller le paquet redistribuable". Cependant, pour moi, cela ne fonctionne pas, car le problème est survenu lors de l'exécution du programme d'installation de notre produit (qui installe le package redistribuable) afin de tester nos nouvelles versions brillantes de VS 2015.

Le problème est apparu car les dll répertoriées ne se trouvaient pas dans le chemin d'installation de Visual Studio (par exemple, C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist) et n'avaient donc pas été ajoutées à l'installation. Ces dll api-ms-win- * sont installées sur un chemin d’installation du SDK Windows 10 dans le cadre de l’installation de Visual Studio 2015 (par exemple, C:\Program Files (x86)\Windows Kits\10\Redist). L’installation sous Windows 10 a bien fonctionné, mais l’installation sous Windows 7 a nécessité l’ajout de ces DLL à l’installation de notre produit. Pour plus d'informations, voir https://support.Microsoft.com/en-us/kb/2999226 qui décrit l'ajout de ces dépendances provoquées par VS 2015 et fournit des téléchargements pour diverses plates-formes Windows; Voir également https://blogs.msdn.Microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/ , qui décrit la refonte des bibliothèques CRT. Le point 6 de la section intitulée Logiciel de distribution utilisant le tube cathodique universel est particulièrement intéressant:

Mis à jour le 11 septembre 2015: le déploiement local de l'application Universal CRT est pris en charge. Pour obtenir les fichiers binaires pour le déploiement local des applications, installez le Kit de développement logiciel Windows (SDK) pour Windows 10. Les fichiers binaires seront installés dans C:\Program Files (x86)\Windows Kits\10\Redist\ucrt. Vous devrez copier toutes les DLL avec votre application (notez que les DLL sont nécessaires sur des versions différentes de Windows. Vous devez donc inclure toutes les DLL pour que votre programme puisse s'exécuter sur toutes les versions de Windows prises en charge. ). 

6
hlongmore

Cette contribution ne répond pas vraiment à la question initiale, mais compte tenu du taux de réussite de ce fil, je suppose qu'il y a beaucoup de personnes qui traitent du problème de l'impossibilité de trouver les bibliothèques API-MS-WIN-CORE. 

J'ai pu résoudre un problème où mon application refusait de commencer par le message d'erreur suivant: API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL n'est pas détecté par une simple mise à jour de Visual Studio.

Je ne pense pas que mon environnement de construction (Win7 Pro SP1, Visual Studio Ultimate 2012) ait été complètement bousillé, il a bien fonctionné pour la plupart de mes projets. Mais dans des circonstances très spécifiques, j'ai reçu le message d'erreur (voir ci-dessous).

Après mise à jour de Visual Studio 11 de la version CD d'origine (j'ai oublié de rechercher le numéro de version) à la version 11.0.61030.00, le projet endommagé était à nouveau exécuté. 

J'espère que cela a aidé quelqu'un!

Error message at application startup

5
normanius

Cela a résolu le problème pour moi. 
Désinstallez le package redistribuable VS 2010 si vous l’avez déjà installé, puis installez SDK Microsoft Windows 7

4
Krazibit312

J'ai résolu le problème. Lorsque j'ai enregistré les fichiers OCX, je l'ai exécuté avec la fenêtre de commande exécutée en tant qu'administrateur.

2
Kim

L'installation de MSSQL Management Studio 2014 sur Windows 7 fraîchement installé a résolu ce problème chez notre client après une bataille ridicule de deux jours.

1
LukaszS

j'ai eu le même problème. Après avoir passé des heures à chercher sur le Web, j'ai trouvé une solution pour moi. J'ai mis le fichier: combase.dll (C:\windows\system32) ensemble dans le dossier realese et résolu.

1
user2938031

pour tous ceux qui sont venus ici mais avec un problème avec photoshop: ma solution était de désinstaller ms vc ++ redistribuable en premier x86 et 64 tous les deux Ensuite, installez-en une adaptée à la version et à l'architecture Windows (86 ou 64).

1
NoWomenNoCry

Suggérez également de vérifier la quantité de mémoire actuellement utilisée. Il s'avère que l'incapacité à trouver ces DLL était le premier symptôme présenté lors de la tentative d'exécution d'un programme (exécuté ou débogué) dans Visual Studio. Après plus d’une demi-heure de grincements de têtes, de recherches sur le Web, d’exécution de procmon et du gestionnaire de tâches, un programme complètement différent en cours d’exécution indique depuis le début des temps que «la mémoire est faible; tel. Tuer Firefox, Thunderbird, procmon, ça dépend, tout a encore fonctionné.

0
Donald Locker

Je suis arrivé ici avec ce problème après avoir essayé une nouvelle installation OEM de Windows 7, de passer à Windows 10.

Après quelques recherches sur les forums Microsoft et autres, j'ai trouvé la solution suivante qui fonctionnait pour moi:

Remplacez C:\Windows10Upgrade\wimgapi.dll par celui de C:\Windows\System32\wimgapi.dll

0
djsmiley2k