2009-06-04 4 views
1

Ich fand Stack Overflow ist eine der besten Gruppe für alle unsere Erklärungen. Ich habe die native DLL in C geschrieben. Ich kompilierte das Projekt mit VC++ (VS 2008). Mit meiner C# -Anwendung habe ich die DLL-Funktionen über Dllimport aufgerufen. Das Problem ist, dass die DLL nicht geladen werden kann. Es besagt, dass die DLL nicht geladen werden kann.dllimport kann die DLL nicht laden

Ich habe auf der Plattform von x86 bis x64 sowohl meine DLL und meine Anwendung kompiliert. Es wäre wirklich toll, wenn ihr mir helfen könnt, dieses Problem zu lösen.

Gibt es eine Möglichkeit zu überprüfen, warum die DLL nicht geladen ist.

Vielen Dank im Voraus.

Antwort

1

Versuchen Sie es mit sysinternal's Process Monitor, um zu sehen, wo Ihre Anwendung die DLL laden will.

Die Win32-Dokumentation für LoadLibrary Links zu details auf, wie es für die DLL sucht.

1

Ich hatte ein Problem mit diesem einmal in dieser Richtung. Ich hatte eine C++ - DLL, die als Schnittstelle zu einer Hardware diente, die ich von C# aus aufrufen musste. Es würde jedoch den DllImport-Aufruf fehlschlagen, wenn der Teil der Hardware nicht eingesteckt wurde. Dies liegt daran, dass die DLL-Initialisierungsfunktion einen Fehler zurückgab, also sagte C# nur, dass es die DLL nicht laden konnte, möglicherweise nicht mit wo die DLL ist.

Vergewissern Sie sich, dass Sie beim Einrichten der DLL in Ihrem C-Code keine Art von Fehlern verursachen.

0

Die Dependency Walker ist ein nettes Werkzeug, um die Sachen zu analysieren, die eine DLL zum Laden verwendet. Für native ausführbare Dateien ist es auch möglich, die exe zu laden und den "Profil" -Menüeintrag zu verwenden, um sogar die geladene DLL anzuzeigen, die nicht angezeigt wird, wenn nur die DLL geladen ist.