在64位Windows中导入32位dll

时间:2017-11-03 19:52:16

标签: c# winforms dll 64-bit dllimport

我需要在WinForm应用程序中导入dll。

[DllImport("ole32.dll")]
static extern int GetRunningObjectTable(uint reserved,out IRunningObjectTable pprot);
[DllImport("ole32.dll")]
static extern int CreateBindCtx(uint reserved,out IBindCtx pctx);

这适用于32位操作系统。

我有64位操作系统,但我安装了32位.dll。 我没有64位.dll。没有ole64.dll

如果有办法在64位操作系统中加载32位dll?

1 个答案:

答案 0 :(得分:3)

您无法在32位进程内加载64位代码,反之亦然。

如果需要在进程内部使用32位代码进行互操作,则还需要运行32位代码。较新VS版本中.NET项目的默认配置是程序在32位操作系统上以32位模式运行,在64位操作系统上以64位模式运行。

您可以在项目选项,构建,平台目标上更改它。将“任何CPU”更改为“x86”: enter image description here

话虽如此,你的问题真的与ole32.dll有关吗?如果您使用的是64位操作系统,则应该在%windir%\ System32文件夹中拥有该DLL的64位副本。在这种情况下,32位版本位于%windir%\ SysWOW64文件夹中。