c# - 如何通过 COM 接口从 C++ 向 C# 发送 64 位整数
问题描述
我有一个 64 C++ COM 服务器和一个 C# COM 客户端。现在我想将一个结构从服务器传递给客户端,它包含一个 64 位整数。
我为 MIDL 编译器使用关键字“hyper”,可以看到该字段是_int64
C++ 和long
C#。
但是,如果我0x0000000000000001
在 C++ 中设置值,我会0x0000000100000000
在 C# 中得到。
我该如何纠正这个问题?
解决方案
这实际上是一个对齐问题。我的 64 位数字在结构中没有对齐。在结构定义之前添加了#pragma pack(4)。然后它起作用了。
推荐阅读
- r - data.table 与 dplyr 中的滚动几何平均值
- sql - 在 postgres 中查询不同的子字符串
- magento - 导入数据库后无法让本地 Magento 安装工作
- javascript - 使用量角器单击重复的列表项
- reactjs - 如何在电子中嵌入pdf文件
- image - Photoshop 曝光调整中偏移滑块背后的数学原理是什么?
- c# - C# - 单元测试工厂设计模式
- python - 如何在python的用户定义函数中实现“仅位置参数”?
- reactjs - 意外的标记 = 在 React JS 类中的第一个函数上
- python - elasticsearch-py更新和创建中不同的JSON解析?