【问题标题】:How send 64 bit integer over COM interface from C++ to C#如何通过 COM 接口从 C++ 向 C# 发送 64 位整数
【发布时间】:2019-11-20 10:32:19
【问题描述】:

我有一个 64 C++ COM 服务器和一个 C# COM 客户端。现在我想将一个结构从服务器传递给客户端,该结构包含一个 64 位整数。

我对 MIDL 编译器使用关键字“hyper”,可以看到该字段在 C++ 中为 _int64,在 C# 中为 long

但如果我在 C++ 中设置值 0x0000000000000001,我会在 C# 中得到 0x0000000100000000

我该如何解决这个问题?

【问题讨论】:

    标签: c# c++ 64-bit midl


    【解决方案1】:

    这实际上是一个对齐问题。我的 64 位数字在结构中没有对齐。 在结构定义之前添加了#pragma pack(4)。 然后就成功了。

    【讨论】:

      猜你喜欢
      • 2010-11-16
      • 1970-01-01
      • 2014-02-19
      • 2021-10-28
      • 2023-03-29
      • 1970-01-01
      • 2015-04-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多