我想构建一个 DLL 类库,使用 COM 互操作,使用 C#,以任何 CPU 为目标,并将其注册为 32 位和 64 位接口。
我希望能够在运行时显示使用的接口——如果我使用的是 32 位版本或 64 位版本。
有任何想法吗?
为了让进程加载 32 位 DLL,该进程必须是 32 位的。对于 64 位也是如此。所以要找出已经加载的内容,假设它已经工作了,你只需要找出 CLR 的位数:
if (System.IntPtr.Size == 8)
{
// 64-bit
}
else
{
// 32-bit
}
PS。有关是否需要检查 16 大小的讨论,请参阅我对这个问题的回答。
再说一次,在 win64 上运行的 32 位进程呢?
https://stackoverflow.com/a/3461562/1498669
如果您使用的是 .Net 4.0,则它是当前流程的单线:
Environment.Is64BitProcess
http://msdn.microsoft.com/en-us/library/system.environment.is64bitprocess.aspx