2013-05-14 23 views
7

Devo utilizzare una DLL di terze parti nella mia applicazione. La DLL è a 32 bit e il sistema che sto usando è un sistema operativo a 64 bit.Utilizzo di dll a 32 bit su sistema a 64 bit mostra 0x8007000B Errore

Ho importato la DLL a 32 bit nella mia applicazione DotNet (quadro-4.5), come di seguito

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

In IIS 7.5 - Ho impostato "Enable 32-bit Applicazione" come "True".

E anche provato a impostare il Gestore compilatore come - X86, x64 e qualsiasi CPU.

Ma tutti i risultati tentativo stesso errore

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

Come risolvere questo problema ......

+0

può essere che si può trovare la risposta qui Aakash

+0

possibile duplicato [Come eseguire VS 2010 Local IIS in modalità 32 bit] (http://stackoverflow.com/questions/10711498/how-to-run-vs-2010-local-iis-in-32-bit-mode) –

+0

vedere questo post sull'errore 0x8007000B http://stackoverflow.com/questions/18007967/net-framework-error-hresult-0x8007000b/36353971#36353971 – JinSnow

risposta

0

Controllare il Corporatura casella di controllo in Configuration Manager per il vostro eseguibile, cosa CPU per cui è in esecuzione, probabilmente hai una CPU qualsiasi lì. Riavviare Visual Studio quindi per non lamentarsi del fatto che non è stato possibile eseguire il debug dell'assembly.

Fare clic con il tasto destro del mouse sul progetto e aprire Proprietà-> Compila-> Opzioni di compilazione avanzate-> CPU di destinazione: deve corrispondere alla "Piattaforma" che si sta creando. Cioè, se stai costruendo "Any CPU" allora "Target CPU" dovrebbe dire "Any CPU". Passa attraverso tutte le tue piattaforme rendendole attive e controlla questa impostazione.

Se si tenta di eseguire applicazioni a 32 bit su IIS 7 (e/o sistema operativo a 64 bit), si otterrà lo stesso errore. Quindi, da IIS 7, fare clic con il pulsante destro del mouse sul pool di applicazioni delle applicazioni e andare su "Impostazioni avanzate" e modificare "Abilita applicazioni a 32 bit" su "VERO".

Riavvia il tuo sito Web e dovrebbe funzionare.

+0

Ciao. Ho fatto tutte le cose che hai menzionato nel 1 ° para e anche nel 3 ° par. Ma si traduce nello stesso errore ... Quando si prova a vedere l'opzione del compilatore, la proprietà non ha opzioni come "Compila-> Opzioni avanzate del compilatore" – Renuka

+0

dipende da un particolare progetto, quale è l'applicazione esatta? – 4pie0

2

Se si tenta di eseguire applicazioni a 32 bit su IIS 7 (e/o sistema operativo a 64 bit), si otterrà lo stesso errore. Quindi, da IIS 7, fare clic con il pulsante destro del mouse sul pool di applicazioni delle applicazioni e andare su "Impostazioni avanzate" e modificare "Abilita applicazioni a 32 bit" su "VERO".

Riavvia il tuo sito Web e dovrebbe funzionare.

0

Ho riscontrato questo problema quando eseguivo una dll a 32 bit su una macchina a 64 bit e quando utilizzavo il metodo DllImport e dimenticavo di installare la libreria ridistribuibile appropriata per ciò che stavo chiamando. Ho avuto bisogno di installare il visual C++ ridistribuibile occasionalmente quando una libreria chiamata aveva una dipendenza da quello e ho anche avuto bisogno di installare la ridistribuibile Intel Visual Fortran - quando si chiama una funzione Fortran da una libreria .NET.