簡體   English   中英

將32位dll轉換為64位dll

[英]Convert 32 bit dll to 64 bit dll

當我嘗試在64位應用程序中使用它時,我有32位編譯的DLL它無法加載,所以我想將dll轉換為64位。 當應用程序的平台從“任何CPU”或“x64”變為“x86”時,它工作正常。 但我想在64位下使用它,因為我要從ASP頁面調用dll。

這個你能幫我嗎。

Windows無法將32位dll加載到64位進程中 - 這是您無法規避的限制。 這意味着如果您的32位DLL對其他32位DLLS(或使用任何32位.Net DLLS)進行任何P / Invokes,您將完全沒有運氣(您將需要以32位運行整個網站)。

你不清楚它什么時候起作用,什么時候不起作用。 以下是解釋:

  1. x86 - 32位 - 無法加載到64位進程中。
  2. x64 - 64位 - 無法在32位機器上執行。
  3. AnyCPU - dual - 可以在兩種環境中加載和執行。

就AnyCPU而言:

  1. 64位機器上的64位進程 - DLL加載為64位。
  2. 32位機器上的32位進程 - DLL加載為32位。
  3. 64位機器上的32位進程 - DLL加載為32位。

在大多數情況下,可以將其保留為AnyCPU。 但是,正如我所說,如果您使用任何本機或.Net 32​​位DLL,您將需要使您的整個應用程序32位(並且沒有任何東西,或微軟可以做到這一點)。

x86標志通常是出於某種原因設置的,因此更改它可能是個壞主意。 但如果你完全確定,那就是一個實用工具corflags.exe。 我在C:\\ Program Files \\ Microsoft SDKs \\ Windows \\ v6.0A \\ bin下有它。 當然它只對.net程序集有幫助。

如果要在32位和64位進程中加載​​純C#DLL,那么正確的選擇是AnyCPU。 這將把它編譯為CPU不可知的DLL,它可以加載到任何類型的進程中。

我不是百分百肯定那是你要問的。 如果不是,你可以澄清你的問題嗎?

暫無
暫無

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

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