Ich habe ein Problem mit unserer ausführbaren Datei. Ich führe diese ausführbare C ++ - 32-Bit-Datei auf meiner Windows 7 64-Bit-Entwicklungsbox aus, die auch alle Microsoft-Anwendungen enthält (Visual Studio 2008 + 2010, TFS, SDK, Microsoft Office) ... und sie läuft immer noch einwandfrei.
Jetzt bekam ich die Client-Installation des gleichen Programms und wurde gebeten, es mit einer sauberen Windows 7-Installation zu testen. Daher habe ich eine Windows 7 64-Bit-VMware erhalten und auf Windows 7 SP 1 aktualisiert (dieselbe Version, die meine Entwicklerbox optimiert). Aber während auf meiner Entwicklerbox alles in Ordnung ist, funktioniert das Programm nicht mit der VMware-Box (30 Tage Testversion).
Der x86 Dependency Walker teilt mir mit, dass die folgenden DLL-Dateien fehlen:
- 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
Ich habe nach diesen API-MS-WIN -... DLL-Dateien gegoogelt und festgestellt, dass sie tatsächlich bereits Teil von Windows 7 sein sollten (einige Websites behaupten jedoch, dass sie zu Windows 8 und Windows Server 2012 gehören).
Ich habe bereits die vorgeschlagenen Korrekturen ausprobiert, die ich gefunden habe:
- Ausführen von 'sfc / scannow'
- Installieren der ausführbaren Laufzeitdateien von Visual Studio 2008 SP1
Aber das hat nichts gelöst. :-(
Randnotiz: Meine Entwicklungsbox hat sie auch nicht und scheint sie nicht zu brauchen. Beispielsweise wird die user32.dll auf meiner Box nicht mit einer dieser verknüpft, während dies bei der Installation auf der VMware der Fall ist.
Haben Sie eine Idee, wie Sie dieses Problem beheben können? Ich habe versucht, auf den Microsoft-Seiten einen geeigneten Download / Fix zu finden, bin jedoch gescheitert.
Nachdem ich mein Problem gelöst hatte, wollte ich berichten, was ich herausgefunden habe, und ich kann dies nicht als Antwort posten, da die Frage geschlossen wurde.
Tatsächlich werden alle DLL-Dateien, die vom Dependency Walker-Tool als fehlend gemeldet wurden, nämlich die
* API-MS-WIN-CORE-...
Typ-DLL-Dateien waren nicht Teil des eigentlichen Problems.
In meinem Fall fehlte die Registrierung von drei OCX-Dateien und danach war alles in Ordnung, ABER das Dependency Walker-Tool listete immer noch dieselben DLL-Dateien wie zuvor auf, selbst wenn das Programm gerade in Ordnung war.
Das Wesentliche: Wie bereits an anderer Stelle erwähnt, ist das Tool inzwischen etwas veraltet und funktioniert mit einem neueren Betriebssystem nicht immer ordnungsgemäß. Halten Sie also ein Auge offen und lassen Sie sich nicht durch das Fehlen von 'API-MS-WIN-CORE-COM-L1-1-0.DLL' irreführen. Das Problem liegt wahrscheinlich ganz woanders.
Antworten:
Dieses Problem hängt damit zusammen, dass das "weiterverteilbare Paket" von Visual Studio fehlt. Es ist nicht offensichtlich, welches aufgrund des Abhängigkeitslaufs fehlt, aber ich würde zuerst das versuchen, das Ihrer Compilerversion entspricht, und prüfen, ob die Dinge richtig laufen:
Visual Studio 2015
Visual Studio 2013
Visual Studio 2010
Visual Studio 2008
Ich bin auf dieses Problem gestoßen, weil ich die Visual Studio-Compiler verwende, aber nicht die vollständige Visual Studio-Umgebung.
Ich werde es wagen, hier einen neuen Link einzufügen: Die neuesten unterstützten Visual C ++ - Downloads . Stein Åsmul, 29.11.2018 .
quelle
Ich habe gerade das gleiche Problem mit C ++ Qt 5 und Windows 7 64 Bit mit MSCVC 2012 gelöst.
Am Anfang dachte ich, es sei ein Problem mit MSVC / Windows-DLL-Dateien, aber wie BorisP sagte, lag das Problem in meinen Projektabhängigkeiten. Der Schlüssel lautet " Woher kennen Sie Ihre Projektabhängigkeiten in Qt 5? ".
Da ich keinen klaren Weg gefunden habe, es zu wissen ( Dependency Walker hat mir nicht viel geholfen ...), folgte ich als nächstes dem "inversen Verfahren", das nicht länger als 5 Minuten dauert, und vermeide viele Kopfschmerzen mit DLL Dateiabhängigkeiten:
Wenn Sie alle DLL-Dateien im selben Ordner haben, ist es einfacher zu finden, welche davon ungültig sind (XML, WebKit, ... was auch immer ...), und folglich dauert diese Methode nicht länger als fünf Minuten.
quelle
windeployqt
Tool dafür, siehe zum Beispiel stackoverflow.com/a/33292008/4023446windeployqt
kopiert häufig unnötige Dateien.Ich habe gerade das gleiche Problem gelöst.
Dependency Walker ist in diesem Fall irreführend und hat mich Zeit verlieren lassen. Daher ist die Liste der "fehlenden" DLL-Dateien aus dem ersten Beitrag nicht hilfreich, und Sie können sie wahrscheinlich ignorieren.
Die Lösung besteht darin, herauszufinden, welche Referenzen Ihr Projekt aufruft, und zu überprüfen, ob sie tatsächlich auf dem Server installiert sind.
@ Ben Brammer, es ist nicht wichtig, welche drei .ocx-Dateien fehlen, da sie nur für Leo T Abrahams Projekt fehlen. Ihr Projekt ruft wahrscheinlich andere DLL-Dateien auf.
In meinem Fall waren es nicht drei .ocx-Dateien, sondern eine fehlende MySQL-Connector-DLL-Datei. Nach der Installation von MySQL Connector für .NET auf dem Server verschwand das Problem.
Kurz gesagt lautet die Lösung: Überprüfen Sie, ob alle Ihre Projektreferenzen vorhanden sind.
quelle
Wie bereits erwähnt, ist DCOMP Teil der VC ++ Redistributables (Implementierung der OpenMP-Laufzeit) und die einzige wirklich fehlende Komponente. Der Rest sind falsche Berichte.
Insbesondere API-MS-WIN-XXXX.DLL sind API-Sets - im Wesentlichen eine zusätzliche Ebene der Anrufindirektion, die seit Windows 7 schrittweise eingeführt wurde. Die Entwicklung von Dependency Walker wurde anscheinend lange zuvor gestoppt und kann API-Sets nicht ordnungsgemäß verarbeiten.
Es gibt also nichts, worüber man sich Sorgen machen müsste. Sie vermissen nichts mehr.
Eine bessere Alternative, um die wirklich benötigten fehlenden DLL-Dateien zu finden (falls dies tatsächlich das Problem ist), besteht darin, Process Monitor auszuführen und vom Fehler zurückzutreten und nach Sequenzen fehlgeschlagener Tests für eine bestimmte DLL-Datei im gesamten Systempfad zu suchen.
quelle
Ich bin auch auf dieses Problem gestoßen, aber die Lösung, die hier ein allgemeiner Thread zu sein scheint und die ich an anderer Stelle im Web gesehen habe, ist "das weiterverteilbare Paket [neu] installieren". Für mich funktioniert dies jedoch nicht, da das Problem beim Ausführen des Installationsprogramms für unser Produkt (das das weiterverteilbare Paket installiert) zum Testen unserer glänzenden neuen Visual Studio 2015-Builds aufgetreten ist.
Das Problem trat auf, weil sich die aufgelisteten DLL-Dateien nicht im Visual Studio-Installationspfad befinden (z. B. C: \ Programme (x86) \ Microsoft Visual Studio 14.0 \ VC \ redist) und daher nicht zur Installation hinzugefügt wurden. Diese api-ms-win- * -Dlls werden im Rahmen der Visual Studio 2015-Installation auf einem Windows 10 SDK-Installationspfad installiert (z. B. C: \ Programme (x86) \ Windows Kits \ 10 \ Redist).
Die Installation unter Windows 10 funktionierte einwandfrei, für die Installation unter Windows 7 mussten diese DLL-Dateien jedoch zu unserer Produktinstallation hinzugefügt werden. Weitere Informationen finden Sie unter Update für Universal C Runtime in Windows, in dem das Hinzufügen dieser durch Visual Studio 2015 verursachten Abhängigkeiten beschrieben wird und Downloads für verschiedene Windows-Plattformen bereitgestellt werden. Siehe auch Einführung in die universelle CRT, in der das Redesign der CRT-Bibliotheken beschrieben wird. Von besonderem Interesse ist Punkt 6 im Abschnitt Verteilen von Software, die die universelle CRT verwendet :
quelle
Dieser Beitrag beantwortet die ursprüngliche Frage nicht wirklich, aber unter Berücksichtigung der Trefferquote dieses Threads gehe ich davon aus, dass es einige Leute gibt, die sich mit dem Problem befassen, dass API-MS-WIN-CORE-Bibliotheken nicht gefunden werden können.
Ich konnte ein Problem lösen, bei dem meine Anwendung sich weigerte, mit der Fehlermeldung zu beginnen, dass API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL nicht durch einfaches Aktualisieren von Visual Studio gefunden wird.
Ich glaube nicht, dass meine Build-Umgebung (Windows 7 Pro SP1, Visual Studio Ultimate 2012) völlig durcheinander war, es hat für die meisten meiner Projekte gut funktioniert. Unter bestimmten Umständen wurde jedoch die Fehlermeldung angezeigt (siehe unten).
Nach dem Update von Visual Studio 11 von der ersten CD-Version (ich habe vergessen, die Versionsnummer nachzuschlagen) auf Version 11.0.61030.00 Update 4 wurde auch das kaputte Projekt erneut ausgeführt.
quelle
Dies löste das Problem für mich:
Deinstallieren Sie das weiterverteilbare Visual Studio 2010-Paket, falls Sie es bereits installiert haben, und installieren Sie dann das Microsoft Windows 7 SDK .
quelle
Ich habe das Problem gelöst. Als ich die OCX-Dateien registriert habe, habe ich sie mit dem Befehlsfenster ausgeführt, das als Administrator ausgeführt wurde.
quelle
Für alle, die hierher kamen, aber mit einem Photoshop- Problem: Meine Lösung bestand darin, die zuerst verteilbaren MS VC ++ zuerst x86 und 64 zu deinstallieren. Installieren Sie dann eine für die Windows-Version und -Architektur geeignete (86 oder 64).
quelle
Die Installation von SQL Server Management Studio 2014 unter einem neu installierten Windows 7 löste dieses Problem auf unserem Client nach einem zweitägigen lächerlichen Kampf.
quelle
Ich hatte das gleiche Problem. Nachdem ich stundenlang im Internet gesucht hatte, fand ich eine Lösung für mich.
Ich habe die Datei combase.dll (C: \ Windows \ System32) in den Release-Ordner kopiert und das Problem behoben.
quelle
Ich bin mit diesem Problem hierher gekommen, nachdem ich versucht hatte, eine neue Windows 7-OEM-Installation durchzuführen und auf Windows 10 zu aktualisieren.
Nach einigen Recherchen in Microsoft-Foren und dergleichen habe ich die folgende Lösung gefunden, die für mich funktioniert hat:
quelle
Ich schlage vor, auch zu überprüfen, wie viel Speicher derzeit verwendet wird.
Es stellt sich heraus, dass die Unfähigkeit, diese DLL-Dateien zu finden, das erste Symptom war, das beim Versuch auftrat, ein Programm (entweder ausführen oder debuggen) in Visual Studio auszuführen.
Nach über einer halben Stunde mit viel Kopfkratzen, Durchsuchen des Webs, Ausführen von Process Monitor und Task Manager und abhängig davon berichtete ein völlig anderes Programm, das seit Beginn der Zeit ausgeführt wurde, dass "der Speicher knapp ist; versuchen Sie, einige Programme anzuhalten". oder solche. Nach dem Töten von Firefox, Thunderbird, Process Monitor und Dependent hat alles wieder funktioniert.
quelle
Um die Antworten hier zu bestätigen, bestand meine Lösung darin, die nicht geladene DLL UND die dazugehörige OCX-Datei in den Ordner system32 zu kopieren, wodurch mein Problem behoben wurde.
quelle