2008-11-16 6 views

Antwort

0

Ich würde vorschlagen, dass Sie FileMon (sysinternals.com) verwenden, um zu überprüfen, ob Ihre Annahmen über den Speicherort der Bibliothek richtig sind.

1

DllImport konsultiert die Umgebungsvariable PATH beim Laden von DLLs nicht. Ich bin ziemlich sicher, dass DllImport den Standardregeln für das Laden einer nativen DLL in einem nativen Programm folgt, wenn die DLL anhand des Namens referenziert wird. Hier ist ein Artikel, der diese Regeln Details

http://msdn.microsoft.com/en-us/library/ms682586.aspx

Ich habe den einfachsten Weg gefunden wird, um die DLL zu laden einfach es an der gleichen Stelle zu setzen, wie das Programm, das ich bin Ausführung.

+1

Vielleicht vermisse ich deine Antwort, aber es klingt nicht richtig. Ich erstellte eine einfache asp.net-Webanwendung, die das DllImport-Attribut verwendet, um eine einfache exportierte Funktion aus einer benutzerdefinierten C++ - DLL aufzurufen. Ohne die Pfadumgebungsvariable zu aktualisieren, erhalte ich die Ausnahme "Kann DLL nicht laden". Wenn die Pfadumgebungsvariable jedoch so aktualisiert wird, dass sie den Pfad zur DLL enthält, kann ich die externe Funktion problemlos aufrufen. –

+1

Ich habe das gleiche Problem hier. Wenn ich DllImport ("sample.dll") verwende, wird es nicht funktionieren. Aber wenn ich DllImport ("C: \\ Somelocation \\ sample.dll") versuche, funktioniert es. – Lance

11

"DllName.dll konnte nicht gefunden werden" könnte auch bedeuten, dass DllImport keine DllName.dll-Abhängigkeiten gefunden hat.

Wählen Sie Dependecy Walker, um zu überprüfen, welche Abhängigkeit Sie vermissen.

0

Ich verwendete const string lcms2Path = "C:\\lcms2.dll"; in meiner C# -Anwendung für die längste Zeit. Aber schließlich verschoben die DLL in den Ordner BIN und das funktioniert perfekt [DllImport("lcms2.dll")].