2013-06-18 12 views
11

Ich habe eine C++ - DLL von dot net verwendet. Wenn ich das Programm starte, bekomme ich einen Fehler, dll nicht gefunden.dll fehlt Abhängigkeiten auf Windows 7-Dateien

Die DLL gibt es - aber ich habe es mit Dependency Walker - und bekam für die folgenden:

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 

Error opening file. The system cannot find the file specified. 

ich eine Suche brachte - offensichtlich diese Gewinne sind 7-Dateien ein d ich Windows haben 7 - aber didn Find sie nicht.

Was kann ich tun?

Ich bin mit VS2010, Windows 7

+0

ist Ihre DLL erforderlich oder es wird indirekt benötigt? Welche Importe fehlen? –

+0

Ich nehme an, es ist indirekt. Die DLL hängt vom Canon SDK ab. Das SDK, das vom Code als eine Lib in C++ verwendet wird, funktioniert - aber ich habe Probleme mit der DLL, die ich erstellt habe, um die Funktionalität zu dot net zu exportieren. – Thalia

+8

Diese Dateien sind tatsächlich vorhanden, Sie können sie einfach nicht sehen. Dependency Walker wurde lange Zeit nicht mehr gepflegt und kann auf modernen Windows-Versionen nicht mehr richtig funktionieren. Verwenden Sie SysInternals ProcMon, Sie werden sehen, dass es nach der DLL sucht und es nicht findet. –

Antwort

10

Dependency Walker (von hier: http://www.dependencywalker.com/) hat veraltet gewachsen. Während es auf win7/win8 läuft, kann es keine normalen DLLs von ihnen erkennen. Wenn Sie den Tab "about" der neuesten Version 2.2.6000 öffnen, sehen Sie, dass er am 29. Oktober 2006 erstellt wurde. Überrascht funktioniert es überhaupt.

Sie können das Prozessüberwachungstool an mehreren Stellen abrufen. Ich fing meins von hier: https://technet.microsoft.com/en-us/sysinternals/bb896645

Sobald Sie es haben, können Sie einen Filter für "Programmname ist" was auch immer und dann führen Sie Ihr Programm. Sie sehen Dinge, die geladen werden und nicht geladen werden können. Das Ergebnis ist nicht ganz so prägnant, wie Sie möchten, aber wenn etwas fehlschlägt, wird es aufgeführt.

+0

Danke für die Antwort, das wurde technisch schon von Hans Passant in seinem Kommentar beantwortet. – Thalia

+1

Ja, aber Sie können die Frage nicht mit einem Kommentar abschließen. Also dachte ich mir, dass ich die Community wissen lassen würde, dass ich versucht habe, in das gleiche Problem zu kommen, den Kommentar auszuprobieren, es hat funktioniert und so habe ich eine Antwort gepostet, um klarzustellen, dass der Kommentar richtig war. – LawfulEvil

+0

Dumpbin ist auch praktisch http://StackOverflow.com/a/28304716/1272428 – rluks

Verwandte Themen