如何將32位元的DLL安裝到64位元的Windows中

 我来答
盘默M2
推荐于2016-07-12 · TA获得超过2.9万个赞
知道大有可为答主
回答量:9723
采纳率:93%
帮助的人:8243万
展开全部

我之前有个专案因为有用到一个 PKI 元件,该元件是用 C++ 开发的 DLL 元件,但当改安装到 64 位元的Windows Server 2008 上就不能用了。直到最近终於在无意间发现一个 Windows Server 2008 64 位元版的一个 "秘密",可以解决这种 32bit DLL 不相容於 64bit 环境的问题。

我几个星期前在 64bit 的 Windows Server 2008 作业系统,一如往常的安装 DLL 元件,步骤如下:

将 DLL 组件先复制到 C:/Windows/System32 目录下

然後进入命令提示字元执行 regsvr32 xxxxxx.dll 指令


安装时就会出现如下图的错误讯息:

我当时 "直觉" 的认为此 DLL 不相容於 64bit 环境,但元件厂商又不提供 64bit 的版本,让我痛苦不已,因为毕竟 Windows Server 2008 64bit + Office + 一拖拉裤的开发工具与软体都已经安装完成,实在不想再重新安装一遍。


直到最近发现在 Windows Server 2008 64bit 有一个奇特的 C:/Windows/SysWOW64 目录,只要把 32bit 元件复制到这个目录就可以正常使用 regsvr32 安装并使用了!


好玩的地方在於他的目录命名规则,在 64bit 架构下的 Windows Server 2008 这两个目录的用途如下:

C:/Windows/System32 目录:放置所有 64bit 的 DLL 元件

C:/Windows/SysWOW64 目录:放置所有 32bit 的 DLL 元件


但为什麼要用 System32 当成 64bit 的预设目录呢?


而需要与 32bit 相容的目录为什麼要用 SysWOW64 当目录名称呢?还真的有一点 WOW (惊讶) 的感觉!


其实 WOW64 是 Windows-on-Windows 64-bit 的缩写,而 WOW64 是 Windows 64bit 的一个子系统,主要的目的在於让 64bit 的 Windows 可以执行 32bit 的应用程式。WOW64 还提供一个简易的转换介面(lightweight translation layer) 能让 32bit 应用程式在完全不用修改的情况下得以在 Windows 64bit 的环境下还能正常执行,其中包括 CPU, Registry, File system, ... 等各种 32bit v.s. 64bit 之间的差异做处理。


这个技术在有支援 64bit 的 Windows 版本中都有支援,像是 Windows XP x64 Edition, Windows Vista, Windows 7, Windows Server 2003, , Windows Server 2008 等。

实际的运作架构如下:

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式