System.DllNotFoundException: DLL konnte nicht in Windows 2003 geladen werden

7

Ich habe c ++ dll mit in meinem c # -Projekt, lief es gut auf meinem Windows XP-Maschine, aber wenn ich mein Debug-Projekt auf Fenster 2003 Server (x64) kopieren, erhielt ich Fehler unten, kann mir jemand sagen, was ist das Problem, und wie kann ich es beheben.

Danke

"System.DllNotFoundException: DLL 'lib.dll' konnte nicht geladen werden: Diese Anwendung konnte nicht gestartet werden, da die Anwendungskonfiguration nicht korrekt ist. Die Neuinstallation der Anwendung könnte dieses Problem beheben"

    
Rick 19.01.2010, 12:42
quelle

4 Antworten

11

Es beschwert sich, dass es Probleme hat, die CRT-DLLs zu finden. Überprüfen Sie zuerst, dass die DLL das erforderliche Manifest enthält. Wählen Sie in Visual Studio Datei + Öffnen + Datei die DLL aus, und vergewissern Sie sich, dass sie einen RT_MANIFEST-Knoten enthält. Das nächste Problem besteht darin, dass Sie einen Debug-Build Ihrer DLL nicht bereitstellen können. Es wird eine Abhängigkeit von der Debug-Version des CRT haben, die Sie auf dem Zielcomputer nicht installieren können.

Stellen Sie entweder das Release-Build Ihrer DLL bereit oder kompilieren Sie die DLL mit der Option / MT, sodass die CRT statisch verknüpft ist. Projekt + Eigenschaften, C / C ++, Codegenerierung, Laufzeitbibliothek. Dies funktioniert nicht, wenn die DLL mit der Option / clr kompiliert wurde.

    
Hans Passant 19.01.2010 13:19
quelle
6

Beim Laden von DLL-Problemen rate ich Ihnen, das Dependency Walker -Tool zu verwenden. Es hat sich bei solchen Problemen als wertvoll erwiesen, da es Ihnen das genaue Problem zeigt.

Wenn Sie Visual Studio 2005 besitzen, können Sie es in C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\Bin\depends.exe finden.

Aktualisierung:

MSVCR90D.DLL ist die Debug-Version der Visual C ++ - Laufzeit 9.0. Es sollte nur zum Debuggen verwendet werden. Ich empfehle dringend, eine Release-Version Ihrer Bibliothek zu erstellen, um das DLL-Ladeproblem zu vermeiden. Wenn Sie die Debug-Version jedoch unbedingt bereitstellen müssen, finden Sie alle erforderlichen DLLs in C:\Program Files\Microsoft Visual Studio 9.0\VC\redist\Debug_NonRedist\x86 .

    
Laurent Etiemble 19.01.2010 13:03
quelle
2

Ist lib.dll eine 32-Bit-DLL? Ihr C # -Programm wird nativ auf x64 ausgeführt, kann jedoch keine 32-Bit-DLLs laden. Sie können versuchen, die Ziel-CPU des C # -Projekts auf "x86" zu ändern, um die Ausführung unter WOW64 zu erzwingen.

    
wj32 19.01.2010 19:39
quelle
1

klingt so, als hätten Sie die visuelle C ++ - Laufzeit auf dem Zielrechner nicht installiert. Sie können das von hier installieren scheint die Debug-Versionen dieser DLLs zu verwenden, vielleicht musst du deine App auch erst im Release-Modus erstellen? Dieser Beitrag und diese haben einige andere Vorschläge, die helfen könnten .. .

    
Sam Holder 19.01.2010 18:52
quelle

Tags und Links