首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将32位dll转换为64位dll

将32位dll转换为64位dll
EN

Stack Overflow用户
提问于 2009-06-03 14:06:12
回答 4查看 52.6K关注 0票数 12

我有32位编译的dll,当我尝试在64位应用程序中使用它时,它无法加载,所以我想将dll转换为64位。当应用程序的平台从"Any CPU“或"x64”更改为"x86“时,它工作得很好。但我想在64位下使用它,因为我将从ASP页面调用dll。

请帮我解决这个问题。

EN

回答 4

Stack Overflow用户

发布于 2009-06-03 14:25:58

Windows不能将32位dll加载到64位进程中-这是您无法绕过的限制。这意味着如果你的32位动态链接库对其他32位动态链接库进行任何P/Invoke(或使用任何32位.Net动态链接库),你将会完全倒霉(你将需要在32位中运行整个网站)。

你不太清楚它什么时候起作用,什么时候不起作用。下面是解释:

  1. x86 -32位-无法加载到64位进程中。
  2. x64-64位-无法在32位#en0# dual上执行-可以在两个环境中加载和执行。

在AnyCPU方面:

64位计算机上的

  1. 64位进程- DLL加载为64位。32位计算机上的
  2. 32位进程- DLL加载为32位。64位计算机上的
  3. 32位进程- DLL加载为32位。

在大多数情况下,将其保留为AnyCPU是很好的。但是,正如我所说的,如果您使用任何本机或.Net 32位DLL,则需要将整个应用程序设置为32位(对此您无能为力,或者微软也无能为力)。

票数 12
EN

Stack Overflow用户

发布于 2009-06-03 14:53:04

设置x86标志通常是有原因的,因此更改它可能不是一个好主意。但是,如果您完全确定,有一个实用程序corflags.exe。我将其放在C:\Program Files\Microsoft SDK\Windows\v6.0A\bin下。当然,它只对.net程序集有帮助。

票数 3
EN

Stack Overflow用户

发布于 2009-06-03 14:11:58

如果您希望在32位和64位进程中都加载纯C# DLL,则正确的选择是AnyCPU。这将把它编译成与CPU无关的DLL,并且它可以加载到任何类型的进程中。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/944962

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档