3

我想构建一个 DLL 类库,使用 COM 互操作,使用 C#,以任何 CPU 为目标,并将其注册为 32 位和 64 位接口。

我希望能够在运行时显示使用的接口——如果我使用的是 32 位版本或 64 位版本。

有任何想法吗?

4

2 回答 2

8

为了让进程加载 32 位 DLL,该进程必须是 32 位的。对于 64 位也是如此。所以要找出已经加载的内容,假设它已经工作了,你只需要找出 CLR 的位数:

if (System.IntPtr.Size == 8)
{
    // 64-bit
}
else
{
    // 32-bit
}

PS。有关是否需要检查 16 大小的讨论,请参阅我对这个问题的回答

于 2008-12-16T17:38:16.527 回答
0

再说一次,在 win64 上运行的 32 位进程呢?

https://stackoverflow.com/a/3461562/1498669

如果您使用的是 .Net 4.0,则它是当前流程的单线:

Environment.Is64BitProcess

http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx

于 2013-12-04T15:27:23.470 回答