首页 > 解决方案 > 如何通过 COM 接口从 C++ 向 C# 发送 64 位整数

问题描述

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

我为 MIDL 编译器使用关键字“hyper”,可以看到该字段是_int64C++ 和longC#。

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

我该如何纠正这个问题?

标签: c#c++64-bitmidl

解决方案


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


推荐阅读