2013-05-14 18 views
7

Muszę użyć DLL innej firmy w mojej aplikacji. DLL jest 32-bitowy, a system, którego używam, jest 64-bitowym systemem operacyjnym.Używanie 32-bitowej biblioteki DLL w 64-bitowym systemie pokazuje 0x8007000B Error

Mam przywoził 32-bitowej DLL w mojej aplikacji DotNet (Framework 4.5) jak poniżej

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

w IIS 7.5 - mam ustawione "Enable 32-bitową aplikację" jako "prawda".

Próbowano także ustawić Menedżera kompilatora jako - X86, x64 i dowolny procesor.

Ale wszystkie próba zakończy się tego samego błędu jak

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

Jak rozwiązać ten problem ......

+0

Może znajdziesz swoją odpowiedź tutaj Aakash

+0

możliwe duplikat [Jak uruchomić VS 2010 Local IIS w trybie 32-bitowym] (http://stackoverflow.com/questions/10711498/how-to-run-vs-2010-local-is-in-32-bit-mode) –

+0

patrz ten post na temat błędu 0x8007000B http://stackoverflow.com/questions/18007967/net-framework-error-hresult-0x8007000b/36353971#36353971 – JinSnow

Odpowiedz

0

Sprawdź Konstruowanie pole wyboru w Configuration Manager do pliku wykonywalnego, co Procesor, na którym działa, prawdopodobnie masz tam Any CPU. Zrestartuj Visual Studio, a następnie nie narzekaj, że nie mógł debugować zestawu.

Kliknij prawym przyciskiem myszy projekt i otwórz Właściwości-> Kompiluj-> Zaawansowane opcje kompilacji-> Docelowy procesor: powinien pasować do budowanej "Platformy". Oznacza to, że jeśli budujesz "Any CPU", to "Target CPU" powinno brzmieć "Any CPU". Przejdź przez wszystkie platformy, ustawiając je w aktywny sposób i sprawdź to ustawienie.

Jeśli spróbujesz uruchomić aplikacje 32-bitowe na IIS 7 (i/lub 64-bitowym systemie operacyjnym), otrzymasz ten sam błąd. Tak więc, z IIS 7, kliknij prawym przyciskiem myszy na puli aplikacji aplikacji i przejdź do "ustawień zaawansowanych" i zmień "Włącz aplikacje 32-bitowe" na "PRAWDA".

Uruchom ponownie swoją witrynę i powinno działać.

+0

Witam. Zrobiłem wszystko, o czym wspomniałem w 1. paragrafie, a także w 3. paragrafie. Ale powoduje to ten sam błąd ... Kiedy próbowano zobaczyć opcję kompilatora, Właściwości nie ma opcji jak "Kompiluj-> Zaawansowane opcje kompilatora" – Renuka

+0

to zależy od konkretnego projektu, co dokładnie jest Twoja aplikacja? – 4pie0

2

Jeśli spróbujesz uruchomić aplikacje 32-bitowe na IIS 7 (i/lub 64-bitowym systemie operacyjnym), otrzymasz ten sam błąd. Tak więc, z IIS 7, kliknij prawym przyciskiem myszy na puli aplikacji aplikacji i przejdź do "ustawień zaawansowanych" i zmień "Włącz aplikacje 32-bitowe" na "PRAWDA".

Uruchom ponownie swoją witrynę i powinno działać.

0

Doświadczyłem tego problemu zarówno podczas uruchamiania 32-bitowego pliku dll na maszynie 64-bitowej, jak i podczas korzystania z metody DllImport i zapomnienia o instalacji odpowiedniej biblioteki redystrybucyjnej dla tego, do czego dzwoniłem. Musiałem zainstalować wizualną redystrybucję C++ przy okazji, gdy biblioteka wywoływana była zależna od tego i musiałem też zainstalować redystrybucję Intel Visual Fortran - podczas wywoływania funkcji Fortran z biblioteki .NET.