我有32位编译的dll,当我尝试在64位应用程序中使用它时,它无法加载,所以我想将dll转换为64位。当应用程序的平台从"Any CPU“或"x64”更改为"x86“时,它工作得很好。但我想在64位下使用它,因为我将从ASP页面调用dll。
请帮我解决这个问题。
发布于 2009-06-03 14:25:58
Windows不能将32位dll加载到64位进程中-这是您无法绕过的限制。这意味着如果你的32位动态链接库对其他32位动态链接库进行任何P/Invoke(或使用任何32位.Net动态链接库),你将会完全倒霉(你将需要在32位中运行整个网站)。
你不太清楚它什么时候起作用,什么时候不起作用。下面是解释:
在AnyCPU方面:
64位计算机上的
在大多数情况下,将其保留为AnyCPU是很好的。但是,正如我所说的,如果您使用任何本机或.Net 32位DLL,则需要将整个应用程序设置为32位(对此您无能为力,或者微软也无能为力)。
发布于 2009-06-03 14:53:04
设置x86标志通常是有原因的,因此更改它可能不是一个好主意。但是,如果您完全确定,有一个实用程序corflags.exe。我将其放在C:\Program Files\Microsoft SDK\Windows\v6.0A\bin下。当然,它只对.net程序集有帮助。
发布于 2009-06-03 14:11:58
如果您希望在32位和64位进程中都加载纯C# DLL,则正确的选择是AnyCPU。这将把它编译成与CPU无关的DLL,并且它可以加载到任何类型的进程中。
不过,我不是100%确定这就是你要问的。如果不是,你能澄清你的问题吗?
https://stackoverflow.com/questions/944962
复制相似问题