我想构建一个DLL类库,使用COM Interop,使用C#,目标ANY CPU,并将其注册为32位和64位接口。
我希望能够在运行时显示使用的接口 - 如果我使用的是32位版本或64位版本。
有什么想法吗?
答案 0 :(得分:8)
为了使进程加载32位DLL,进程必须是32位。对于64位也一样。因此,要找出已经加载的内容,假设它已经有效,您只需要找出CLR的位数:
if (System.IntPtr.Size == 8)
{
// 64-bit
}
else
{
// 32-bit
}
PS。有关是否需要检查大小为16的讨论,请参阅my answer to this question。
答案 1 :(得分: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