簡體   English   中英

32位dll在64位服務器C#上不起作用

[英]32bit dll not work on 64bit Server C#

我已經用Dev-C ++編譯了ac natives 32位DLL,在我的asp.net項目上創建了引用,編寫了dllImport指令並使用了我的新DLL。 啟動我的DEBUG會話時,所有工作都很好,但是在Web Server上部署我的項目時,運行時不會加載我的DLL。

我的IIS 7.0 w3wp.exe作為64位進程運行(要檢查您的進程是否在WOW64下作為32位進程運行,請打開任務管理器的“進程”選項卡,並查看進程名稱是否包含“ * 32”)。

我相信64位進程只能加載64位本機DLL(以及為“任何CPU”或“ X64”構建的托管DLL)。 也許您的調試會話是32位會話? 如果這是原因,請查看在C#DllImport使用32位或64位dll

對於仍然無法找到適當方法在64位IIS應用程序池下使用32位DLL的那些人,可以通過調整注冊表或嘗試使用“ COM +組件服務”來解決,完美的解決方案:將此頁面中所述的32位組件“封裝”到一個新的COM對象中,可以很好地完成工作,我想很多人都希望以此方式解決問題;) http:// /www.chestysoft.com/component-services.asp

就我而言,這使我可以使用XStandard的免費組件“ XStandard.Zip”,該組件只能作為32位ASP組件使用,並且在注冊表中具有“ InProcServer32”鍵,顯然阻止了它的工作。調整注冊表,如下所述: https : //techtalk.gfi.com/32bit-object-64bit-environment/

在這篇文章中,許多評論報告“ 由於Microsoft假定 InProcServer32-ID 僅是InProc-Calls而不是Out-Of-Proc-Calls,因此未反映出來 ”。 這也是我的情況,導致我遇到以下情況:與其他用戶一樣,上一篇文章中描述的注冊表調整解決方案在我的情況下不起作用。

希望節省一些...或夜晚!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM