将32位dll转换为64位dll

11 c# windows-vista

当我尝试在64位应用程序中使用它时,我有32位编译的DLL它无法加载,所以我想将dll转换为64位.当应用程序的平台从"任何CPU"或"x64"变为"x86"时,它工作正常.但我想在64位下使用它,因为我要从ASP页面调用dll.

这个你能帮我吗.

Jon*_*son 11

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位(并且没有任何东西,或微软可以做到这一点).


Jar*_*Par 0

如果您想在 32 位和 64 位进程中加载​​纯 C# DLL,那么正确的选择是 AnyCPU。这会将其编译为与 CPU 无关的 DLL,并且可以将其加载到任一类型的进程中。

我不是 100% 确定这就是你所问的。如果不是,你能澄清你的问题吗?