277 votes

Win 7, 64 bits, dll problèmes

J'ai un problème avec notre exécutable. Je suis l'exécution de ce C++ exécutable 32 bits sur mon Win-7 64-bit de développement de la zone qui a également toutes ces applications MS (Visual Studio 2008 + 2010, TFS, SDK, MS Office)... Et son toujours en cours d'exécution à l'amende juste.

Maintenant, je suis à l'installation du client du même programme et wwas demandé de le tester avec un chiffon propre Win-7 installation. Donc j'ai eu j'ai Win-7 64-bit, VM Ware et mis à jour pour Win-7 SP 1 (la même version que mon développeur boîte est superbe). Mais alors que sur mon développeur de la boîte, tout est parfait, le programme ne fonctionne pas avec la VW la Vaisselle (30 jours d'essai).

Le x86 dependency walker est de me dire que les Dll suivantes sont manquantes:

  • 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 googlé pour ceux API-MS-WIN-... les dll et a constaté qu'ils devraient être déjà partie de Win-7 (certains sites revendiquant la appartenir à Gagner-8 et Win server 2012).

J'ai déjà essayé la suggestion de correction, j'ai trouvé, qui sont:

  • de l'exécution "sfc /scannow'
  • l'installation de Visual Studio 2008 SP1 exécution de fichiers exécutables

Mais cela ne résout rien. :-(

Note de côté: Ma de développement de la zone n'ont pas eux non plus, et ne semble pas en avoir besoin. Par exemple, le user32.dll sur ma boîte n'a pas de lien à l'encontre de l'un de ceux-ci, tandis que l'installation de la VM ware.

Aucune idée sur comment résoudre ce problème? J'ai essayé de trouver un adapté à télécharger / fix sur le MS pages, mais a échoué.

En ce qui concerne, Thomas


Après la résolution de mon problème, je voulais signaler que j'ai trouvé, et je ne peux pas poster cela comme une réponse, car la question a été fermé.

En fait toutes les Dll portées disparues par l'outil dependency walker, nameley ceux

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

type Dll ne faisaient pas partie du problème.

Dans mon cas, l'enregistrement de 3 fichiers OCX qui manquait et, après ça, tout était très bien, MAIS dependency walker outil encore la liste de tous les mêmes Dll comme avant, même lorsque le programme est en cours d'exécution juste bien maintenant.

L'essentiel: Comme quelqu'un l'a d'ailleurs déclaré, l'outil est un peu daté maintenant et ne fonctionne pas toujours correctement avec les nouveaux OS. Donc gardez l'oeil ouvert et ne vous laissez pas induire en erreur par les disparus "API-MS-WIN-CORE-COM-L1-1-0.DLL' ... le problème réside probablement totalement ailleurs.

63voto

meawoppl Points 443

Ce problème est lié au manque de Visual studio "package redistribuable." Il n'est pas évident d'un manque basé sur la dépendance à pied, mais je voudrais essayer l'un qui correspond à votre version de compilateur d'abord et voir si les choses correctement:

VS 2010

VS 2008

Je suis tombé sur ce problème parce que je suis en utilisant le VS compilateurs, mais pas la totalité VS environnement.

19voto

Inejose Points 91

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

Au début je pensais que C'était un MSVC/windows dll problème, mais comme BorisP dit, le problème est dans mon dépendances du projet. La clé, c'est "Comment savoir où en est votre projet de dépendances dans Qt5?".

Comme je n'ai pas trouvé de moyen de le savoir (Dépendance Wolker ne m'aide pas beaucoup...), j'ai suivi suivant "inverse de la procédure" qui ne prend pas plus de 5 minutes et d'éviter beaucoup de maux de tête avec Dll de dépendances:

  1. Compiler votre projet et de prendre le fichier exécutable dans un dossier vide: myproject.exe
  2. Essayez de l'exécuter, de récupérer une erreur (les dll manquantes...).
  3. Maintenant, copiez toutes les dll de Qt (dans mon cas, ils ont été en C:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin) à ce dossier.
  4. Essayez d'exécuter à nouveau, il sera probablement fonctionne très bien.
  5. Commencer à supprimer progressivement et essayer à chaque fois que votre exécutable fonctionne toujours, en essayant de laisser le minimum nécessaire Dll.

Lorsque vous avez toutes les Dll dans le même dossier, il est plus facile de trouver lequel d'entre eux ne sont pas valides (XML, webkit... quoi que..) , par conséquent, cette méthode ne prend pas plus de cinq minutes.

17voto

BorisP Points 31

Je viens résolu le même problème.

Dependency Walker est trompeur dans ce cas et m'a fait perdre du temps. Donc, la liste des "disparus" dll à partir de la première post n'est pas utile, vous pouvez probablement ignorer.

La solution est de trouver les références de votre projet est d'appeler et vérifier si elles sont vraiment installé sur le serveur.

@Ben Brammer, il n'est pas important 3 .les fichiers ocx sont absents parce qu'ils manquent seulement pour Leo T d'Abraham projet. Votre projet probablement appelle d'autres dll.

Dans mon cas, c'était pas 3 .les fichiers ocx, mais l'absence de MySQL connector dll. Après l'installation de MySQL Connector pour .Net sur le serveur, le problème a disparu.

Donc, en bref solution: vérifiez si tous vos projet les références sont là.

Cheers

3voto

Krazibit312 Points 87

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 Microsoft Windows 7 SDK

2voto

Kim Points 11

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 qui avait été exécutée en tant qu'administrateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X