当我尝试在64位应用程序中使用它时,我有32位编译的dll无法加载, 所以我想将dll转换为64位。当应用程序的平台从“任何CPU”或“x64”变为“x86”时,它工作正常。但我想在64位下使用它,因为我要从ASP页面调用dll。
请帮我解决这个问题。
答案 0 :(得分:10)
Windows无法将32位dll加载到64位进程中 - 这是您无法避免的限制。这意味着如果您的32位DLL对其他32位DLLS(或使用任何32位.Net DLLS)进行任何P / Invokes,您将完全没有运气(您将需要以32位运行整个网站)。
你不清楚它什么时候起作用,什么时候不起作用。以下是解释:
就AnyCPU而言:
在大多数情况下,可以将其保留为AnyCPU。但是,正如我所说的,如果你使用的是任何本机或.Net 32位DLL,你需要将你的整个应用程序设置为32位(并且你可以做任何事情,或微软可以做到这一点)。
答案 1 :(得分:2)
x86标志通常是出于某种原因设置的,因此更改它可能是个坏主意。但如果你完全确定,那就是一个实用工具corflags.exe。我在C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin下有它。当然它只对.net程序集有帮助。
答案 2 :(得分:0)
如果要在32位和64位进程中加载纯C#DLL,那么正确的选择是AnyCPU。这将把它编译为CPU不可知的DLL,它可以加载到任何类型的进程中。
我不是百分百肯定这就是你所要求的。如果不是,你可以澄清你的问题吗?
答案 3 :(得分:0)