web-dev-qa-db-de.com

Windows 7, 64 Bit, DLL Probleme

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 diese Microsoft-Anwendungen (Visual Studio 2008 + 2010, TFS, SDK, Microsoft Office) ..... enthält Alles gut.

Nun bekam ich die Client-Installation des gleichen Programms und wurde gebeten, es mit einer sauberen Windows 7-Installation zu testen. Also habe ich eine Windows 7 64-Bit-VMware und ein Update auf Windows 7 SP 1 (genau dieselbe Version, in der sich meine Entwicklerbox befindet) .. .. Aber während auf meiner Entwicklerbox alles in Ordnung ist, ist das Programm nicht in Ordnung Arbeiten Sie mit der VMware-Box (30 Tage Testversion).

Der x86 Dependency Walker sagt mir, 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 für diese API-MS-WIN -... DLL -Dateien gegoogelt und festgestellt, dass sie eigentlich bereits Teil von Windows 7 sein sollten (einige Sites, die behaupten, dass sie zu Windows 8 und Windows Server 2012 gehören).

Ich habe bereits die vorgeschlagenen Korrekturen ausprobiert:

  • 'sfc/scannow' ausführen
  • installieren der ausführbaren Laufzeitdateien von Visual Studio 2008 SP1

Aber das hat nichts gelöst. :-(

Randbemerkung: Meine Entwicklungsbox hat sie auch nicht und scheint sie auch nicht zu benötigen. Zum Beispiel wird die user32.dll in meiner Box nicht mit einer dieser Links verbunden, während dies bei der Installation auf VMware der Fall ist.

Irgendeine Idee, wie Sie dieses Problem beheben können? Ich habe versucht, einen geeigneten Download/Fix auf den Microsoft-Seiten zu finden, aber ich bin fehlgeschlagen.


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 vom Dependency Walker-Tool als fehlend gemeldet, nämlich die

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

typ DLL -Dateien waren nicht Teil des tatsächlichen Problems.

In meinem Fall fehlte die Registrierung von drei OCX-Dateien, und danach war alles in Ordnung. Das BUT Dependency Walker-Tool listete jedoch immer noch die gleichen DLL -Dateien auf, selbst als das Programm gerade lief.

Das Wichtigste daran: Wie bereits an anderer Stelle erwähnt, ist das Tool inzwischen etwas älter und funktioniert mit einem neueren Betriebssystem nicht immer einwandfrei. Halten Sie also ein Auge auf und lassen Sie sich nicht durch das Fehlen von 'API-MS-WIN-CORE-COM-L1-1-0.DLL' in die Irre führen, ... das Problem liegt wahrscheinlich ganz woanders.

250
tlvs

Dieses Problem hängt damit zusammen, dass das umverteilbare Paket von Visual Studio fehlt. Es ist nicht offensichtlich, welche davon aufgrund der Abhängigkeitsspur fehlt, aber ich würde zuerst die Version ausprobieren, die Ihrer Compiler-Version entspricht, und prüfen, ob alles ordnungsgemäß läuft:

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.


Gehen Sie hier, um einen neuen Link einzufügen: Die neuesten unterstützten Visual C++ - Downloads . Stein Åsmul, 29.11.2018.

56
meawoppl

Ich auch, ich habe gerade das gleiche Problem mit C++ Qt5 und W7 64bits mit MSCVC 2012 gelöst.

Am Anfang dachte ich, dass es ein MSVC/Windows-DLL-Problem war, aber wie BorisP sagte, lag das Problem in meinen Projektabhängigkeiten. Der Schlüssel ist "Woher kennen Sie Ihre Projektabhängigkeiten in Qt5?".

Da ich keinen klaren Weg gefunden habe, um es zu wissen (Dependency Wolker hat mir nicht viel geholfen ...), folgte ich dem nächsten "inversen Verfahren", das nicht länger als 5 Minuten dauert und viele Kopfschmerzen mit Dlls-Abhängigkeiten vermeidet :

  1. Kompilieren Sie Ihr Projekt und speichern Sie die ausführbare Datei in einem leeren Ordner: myproject.exe
  2. Versuchen Sie es auszuführen, es wird ein Fehler abgerufen (fehlende DLLs ...).
  3. Nun, kopiere alle dlls von Qt (in meinem Fall waren sie in C:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin) in diesen Ordner.
  4. Versuchen Sie es erneut, es wird wahrscheinlich funktionieren.
  5. Beginnen Sie mit dem schrittweisen Löschen. Versuchen Sie jedes Mal, wenn Ihre ausführbare Datei noch funktioniert, und versuchen Sie, die minimal erforderlichen DLLs zu lassen.

Wenn sich alle DLLs im selben Ordner befinden, ist es einfacher zu finden, welche davon ungültig sind (XML, Webkit usw.). Daher dauert diese Methode nicht länger als fünf Minuten.

19
Inejose

Ich habe gerade dasselbe Problem gelöst. 

Abhängigkeitswanderer ist in diesem Fall irreführend und hat dazu geführt, dass ich Zeit verlor. Daher ist die Liste der "fehlenden" DLLs aus dem ersten Beitrag nicht hilfreich. Sie können sie wahrscheinlich ignorieren.

Die Lösung besteht darin, herauszufinden, welche Referenzen Ihr Projekt anruft, und zu überprüfen, ob sie wirklich auf dem Server installiert sind. 

@Ben Brammer, es ist nicht wichtig, welche 3 .ocx-Dateien fehlen, da sie nur für das Projekt von Leo T Abraham fehlen. Ihr Projekt ruft wahrscheinlich andere DLLs auf.

In meinem Fall waren es nicht 3 .ocx-Dateien, sondern die MySQL-Connector-DLL. Nach der Installation von MySQL Connector for .Net auf dem Server ist das Problem verschwunden.

Kurz gesagt, Lösung: Überprüfen Sie, ob alle Ihre Projektreferenzen vorhanden sind.

Prost

16
BorisP

Wie bereits erwähnt, ist DCOMP Teil der VC++ - Redistributables (Implementierung der OpenMP-Laufzeit) und die einzige wirklich fehlende Komponente. Alles andere sind falsche Berichte.

Speziell API-MS-WIN-XXXX.DLL sind API-Sets - im Wesentlichen eine zusätzliche Ebene der Anrufumleitung , die seit Windows 7 allmählich eingeführt wurde. t API-Sets richtig behandeln.

Also nichts zu befürchten. Sie vermissen nichts mehr.

Um die wirklich benötigten DLLs zu finden (wenn dies tatsächlich das Problem ist), ist es eine bessere Alternative, ProcessMonitor auszuführen und einen Schritt rückwärts auszuführen, wobei nach Sequenzen fehlgeschlagener Tests für eine bestimmte DLL im gesamten Systempfad gesucht wird .

11
Ofek Shilon

Ich bin auch auf dieses Problem gestoßen, aber die Lösung, die hier ein allgemeiner Thread zu sein scheint, und ich habe an anderer Stelle im Web gesehen, ist "das neuverteilbare Paket erneut installieren". Für mich funktioniert das jedoch nicht, da das Problem aufgetreten ist, als das Installationsprogramm für unser Produkt (das das weitervertreibbare Paket installiert) ausgeführt wird, um unsere glänzenden neuen VS 2015-Builds zu testen.

Das Problem trat auf, weil sich die aufgeführten DLLs nicht im Installationspfad von Visual Studio 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 Installation von Visual Studio 2015 (z. B. C:\Programme (x86)\Windows Kits\10\Redist) in einem Windows 10-SDK-Installationspfad installiert. Die Installation unter Windows 10 hat gut funktioniert, aber für die Installation unter Windows 7 mussten diese DLLs zur Produktinstallation hinzugefügt werden. Weitere Informationen finden Sie unter https://support.Microsoft.com/en-us/kb/2999226 , in dem das Hinzufügen dieser Abhängigkeiten beschrieben wird, die durch VS 2015 verursacht wurden, und Downloads für verschiedene Windows-Plattformen bereitstellt. Siehe auch https://blogs.msdn.Microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/ - , in dem das Redesign der CRT-Bibliotheken beschrieben wird. Von besonderem Interesse ist Punkt 6 im Abschnitt Distributing Software, der das Universal CRT verwendet:

Aktualisiert am 11. September 2015: App-lokales Bereitstellen des Universal CRT wird unterstützt. Um die Binärdateien für die App-Local-Bereitstellung zu erhalten, installieren Sie das Windows Software Development Kit (SDK) für Windows 10. Die Binärdateien werden unter C:\Programme (x86)\Windows Kits\10\Redist\ucrt installiert. Sie müssen alle DLLs mit Ihrer App kopieren (Beachten Sie, dass der Satz von DLLs für verschiedene Windows-Versionen unterschiedlich ist. Daher müssen Sie alle DLLs einschließen, damit Ihr Programm auf allen unterstützten Windows-Versionen ausgeführt werden kann ). 

6
hlongmore

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 sich meine Anwendung 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 (Win7 Pro SP1, Visual Studio Ultimate 2012) völlig durcheinander war, es hat für die meisten meiner Projekte gut funktioniert. Unter bestimmten Umständen bekam ich jedoch die Fehlermeldung (siehe unten).

Nach Update von Visual Studio 11 von der ursprünglichen CD-Version (ich habe vergessen, die Versionsnummer nachzuschlagen) bis Version 11.0.61030.00 Update 4 lief auch das defekte Projekt wieder. 

Ich hoffe das hat jemandem geholfen!

Error message at application startup

5
normanius

Dies löste das Problem für mich. 
Deinstallieren Sie das verteilbare Paket von VS 2010, wenn Sie es bereits installiert haben, und installieren Sie das Microsoft Windows 7 SDK .

4
Krazibit312

Ich habe das Problem gelöst. Bei der Registrierung der OCX-Dateien habe ich sie mit dem Befehlsfenster ausgeführt, das als Administrator ausgeführt wurde.

2
Kim

Installation MSSQL Management Studio 2014 unter neu installiertem Windows 7 hat dieses Problem bei unserem Kunden nach einem 2-tägigen lächerlichen Kampf gelöst.

1
LukaszS

ich hatte das gleiche Problem. Nachdem ich stundenlang im Internet gesucht hatte, fand ich eine Lösung für mich. Ich legte die Datei: combase.dll (C:\windows\system32) zusammen in den realese-Ordner und löste sie auf.

1
user2938031

für alle, die hierher gekommen sind, aber mit Photoshop-Problem: Meine Lösung bestand darin, ms vc ++ umverteilbare erste x86 und 64 zu deinstallieren. Installieren Sie dann eine für Windows-Version und -Architektur geeignete Version (86 oder 64).

1
NoWomenNoCry

Schlagen Sie auch vor, wie viel Speicher momentan belegt ist. Es stellt sich heraus, dass die Unfähigkeit, diese DLLs zu finden, das erste Symptom war, als versucht wurde, ein Programm (entweder Ausführen oder Debuggen) in Visual Studio auszuführen. Nach mehr als einer halben Stunde mit viel Kopfkratzen, dem Suchen nach Web, dem Ausführen von procmon und dem Task-Manager und dessen Abhängigkeiten wurde von einem völlig anderen Programm, das seit Beginn der Zeit ausgeführt wurde, gemeldet, dass "der Arbeitsspeicher zu niedrig ist; eine solche. Firefox zu töten, Thunderbird, Procmon, hängt davon ab, alles hat wieder funktioniert.

0
Donald Locker

Ich bin hierher gekommen, als dieses Problem auftrat, nachdem ich eine neue Windows 7 OEM-Installation mit einem Upgrade auf Windows 10 versucht hatte.

Nach einigem Suchen in Microsoft-Foren fand ich folgende Lösung, die für mich funktionierte:

Ersetzen Sie C:\Windows10Upgrade\wimgapi.dll durch den von C:\Windows\System32\wimgapi.dll

0
djsmiley2k