2013-05-14 11 views
7

Ich muss eine DLL von Drittanbietern in meiner Anwendung verwenden. Die DLL ist ein 32-Bit und das System, das ich verwende, ist 64-Bit-Betriebssystem.Die Verwendung von 32-Bit DLL auf 64-Bit-System zeigt 0x8007000B Fehler

ich importiert habe die 32-Bit-DLL in meiner DotNet Anwendung (Rahmen-4.5) wie unten

[DllImport("Sample.dll", 
    EntryPoint = "Add", 
    CharSet = CharSet.Ansi, 
    CallingConvention = CallingConvention.StdCall)] 
    public static extern int Add(int iA, int iB); 

In IIS 7.5 - Ich habe festgelegt "Enable 32-Bit-Anwendung" als "True".

Und auch versucht, den Compiler Manager als - X86, x64 und Any CPU.

Aber alle Versuche Ergebnisse in gleichen Fehlern wie

An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) 

wie dieses Problem lösen ......

+0

Mai werden Sie Ihre Antwort hier Aakash

+0

möglich Duplikat finden [So wird VS 2010 Local IIS im 32-Bit-Modus ausgeführt] (http://stackoverflow.com/questions/10711498/how-to-run-vs-2010-local-iis-in-32-bit-mode) –

+0

siehe Dieser Beitrag über den 0x8007000B Fehler http://stackoverflow.com/questions/18007967/net-framework-error-result-0x8007000b/36353971#36353971 – JinSnow

Antwort

0

überprüfen Sie die Build- Checkbox in dem Configuration Manager für die ausführbare Datei, was CPU, für die es läuft, wahrscheinlich haben Sie Any CPU dort gebaut. Starten Sie Visual Studio neu, um sich nicht zu beschweren, dass es die Assembly nicht debuggen konnte.

Klicken Sie mit der rechten Maustaste auf das Projekt und öffnen Sie Eigenschaften-> Kompilieren-> Erweiterte Kompilieroptionen-> Ziel-CPU: Es sollte mit der "Plattform" übereinstimmen, die Sie erstellen. Das heißt, wenn Sie "Any CPU" erstellen, sollte "Target CPU" "Any CPU" sagen. Gehen Sie durch alle Ihre Plattformen, indem Sie sie aktivieren und überprüfen Sie diese Einstellung.

Wenn Sie versuchen, 32-Bit-Anwendungen auf IIS 7 (und/oder 64-Bit-Betriebssystem) auszuführen, erhalten Sie den gleichen Fehler. Klicken Sie also vom IIS 7 aus mit der rechten Maustaste auf den Anwendungspool der Anwendungen und gehen Sie zu "Erweiterte Einstellungen" und ändern Sie "32-Bit-Anwendungen aktivieren" in "TRUE".

Starten Sie Ihre Website neu und es sollte funktionieren.

+0

Hallo. Ich habe all die Dinge getan, die Sie im 1. Absatz und auch im 3. Absatz erwähnt haben. Aber es führt zu gleichen Fehler ... Wenn versucht, die Compiler-Option zu sehen, hat die Eigenschaften keine Option wie "Kompilieren-> Erweiterte Compiler-Optionen" – Renuka

+0

es hängt von bestimmten Projekt, was Ihre Anwendung genau ist? – 4pie0

2

Wenn Sie versuchen, 32-Bit-Anwendungen auf IIS 7 (und/oder 64-Bit-Betriebssystem) auszuführen, erhalten Sie den gleichen Fehler. Klicken Sie also vom IIS 7 aus mit der rechten Maustaste auf den Anwendungspool der Anwendungen und gehen Sie zu "Erweiterte Einstellungen" und ändern Sie "32-Bit-Anwendungen aktivieren" in "TRUE".

Starten Sie Ihre Website neu und es sollte funktionieren.

0

Ich habe dieses Problem sowohl beim Ausführen einer 32-Bit-DLL auf einem 64-Bit-Rechner und bei der Verwendung der DllImport-Methode und vergessen, die entsprechende weitervertreibbare Bibliothek für das, was ich anruft, zu installieren. Ich musste gelegentlich das Visual C++ Redistributable installieren, wenn eine aufgerufene Bibliothek eine Abhängigkeit davon hatte, und ich musste auch das verteilbare Intel Visual Fortran - wenn ich eine Fortran-Funktion aus einer .NET-Bibliothek aufruft - installieren.