【问题标题】:Runtime C# knowing if 32-bit or 64-bit version of COM Interface is being used运行时 C# 知道是否正在使用 32 位或 64 位版本的 COM 接口
【发布时间】:2023-03-03 11:51:01
【问题描述】:

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

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

有什么想法吗?

【问题讨论】:

    标签: c# interop x86 64-bit regsvr32


    【解决方案1】:

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

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

    PS。有关是否需要检查 16 大小的讨论,请参阅my answer to this question

    【讨论】:

    【解决方案2】:

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

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

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

    Environment.Is64BitProcess

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

    【讨论】:

      猜你喜欢
      • 2015-01-18
      • 1970-01-01
      • 2013-08-08
      • 1970-01-01
      • 2010-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多