2013-05-14 123 views
7

我必須在我的應用程序中使用第三方DLL。該DLL是一個32位,我使用的系統是64位操作系統。在64位系統上使用32位DLL顯示0x8007000B錯誤

我已導入32位DLL在我的申請DOTNET的(框架-4.5)如下面

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

在IIS 7.5 - I設置了 「啓用的32位應用程序」 爲 「真」。

還嘗試將編譯器管理器設置爲 - X86,x64和任何CPU。

但所有的嘗試導致同樣的錯誤

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

如何解決這個問題......

+0

可能是你可以找到你的答案在這裏 Aakash 2013-05-14 09:32:24

+0

可能重複[如何以32位模式運行VS 2010本地IIS](http://stackoverflow.com/questions/10711498/how-to-run-vs-2010-local-iis-in-32-bit-mode) – 2013-05-14 10:03:29

+0

請參閱這篇文章關於0x8007000B錯誤http://stackoverflow.com/questions/18007967/net-framework-error-hresult-0x8007000b/36353971#36353971 – JinSnow 2016-04-01 10:28:19

回答

0

檢查在Configuration Manager的構建複選框可執行文件,是什麼它正在運行的CPU,可能你有任何CPU在那裏建立。重新啓動Visual Studio然後不抱怨它不能調試程序集。該項目開放的屬性 - >編譯期>高級編譯選項 - >目標CPU

右鍵單擊:它應該與「站臺」你正在建設。也就是說,如果你正在構建「任何CPU」,那麼「目標CPU」應該說「任何CPU」。通過使所有平臺處於活動狀態並檢查此設置來瀏覽所有平臺。

如果您嘗試運行IIS 7(和/或64位操作系統的機器)的32位應用程序,你會得到同樣的錯誤。因此,從IIS 7中右鍵單擊應用程序的應用程序池並轉到「高級設置」並將「啓用32位應用程序」更改爲「TRUE」。

重新啓動您的網站,它應該工作。

+0

嗨。我已經完成了你在第一段和第三段中提到的所有事情。但它導致同樣的錯誤...當試圖看到編譯器選項時,屬性沒有像「Compile-> Advanced Compiler Options」這樣的選項 – Renuka 2013-05-14 10:05:20

+0

它取決於特定的項目,你的應用程序到底是什麼? – 4pie0 2013-05-14 10:27:28

2

如果您嘗試運行IIS 7(和/或64位操作系統的機器)的32位應用程序,你會得到同樣的錯誤。因此,從IIS 7中右鍵單擊應用程序的應用程序池並轉到「高級設置」並將「啓用32位應用程序」更改爲「TRUE」。

重新啓動您的網站,它應該工作。

0

當我運行在64位機上的32位的DLL和使用的DllImport方法時,忘記安裝相應的可再發行庫我打電話我都經歷過這個問題兩者。我偶爾需要安裝visual C++可再發行組件,當一個被調用的庫有依賴關係時,我還需要安裝英特爾Visual Fortran可再發行組件 - 從.NET庫調用Fortran函數時。

相關問題