[英]Deployed 64bit c# application can't load unmanaged dll
我有一個用c#編寫的64位Web應用程序,該應用程序已部署到Windows Server 2008(IIS 7)和Windows Server 2012(IIS 8)上的IIS。
該應用程序的一部分涉及從c#代碼訪問非托管的c ++ DLL。 當我部署到IIS時,此調用失敗。 我得到經典:
試圖加載格式錯誤的程序。 (來自HRESULT的異常:0x8007000B)
我已經閱讀了有關該主題的許多主題,包括:
但我不認為它們適用於
應用程序中有32位dll,但是它們位於完全獨立的項目中,這些項目沒有被拋出錯誤的項目引用或引用。
有關其他信息,它在IIS Express中的我的本地計算機上以及通過IIS(Windows 7)部署時在我的本地計算機上都運行良好,因此某個地方存在斷開連接,我無法對其進行跟蹤。
附加信息:
非托管DLL確實依賴於:
我意識到這些是32位的,我以為是32位的,但是在一台64位的機器上,它們都存在於System32中,所以我不確定...但是,如果是這樣,當將非托管DLL本身編譯為64位。
另外,為什么它對我本地有效?
另外,我(僅適用於踢踢和吃喝玩樂)將Enable32BitApplications設置為True,並且遇到相同的錯誤,因為我的項目是64位項目,並且引用了不能在32位進程中運行的64位非托管DLL。
對於非托管DLL,還有一個附加依賴性,它是c ++可再發行的dll。 在機器上該DLL的副本為32位,一旦我換出64位版本,就可以正常加載了。
從中學到的知識,必須存在DLL的所有依賴關系以及正確的Bitness。
您需要在IIS中將Enable32bitApplications設置為true。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.