[英]Runtime C# knowing if 32-bit or 64-bit version of COM Interface is being used
[英]How send 64 bit integer over COM interface from C++ to C#
我有一个 64 C++ COM 服务器和一个 C# ZD47C174ED277BDF06CFC72763AB779 客户端。 现在我想将一个结构从服务器传递到客户端,该客户端包含一个 64 位 integer。
我对 MIDL 编译器使用关键字“hyper”,可以看到该字段在 C++ 中为_int64
,在 C# 中为long
。
但是,如果我在 C++ 中设置值0x0000000000000001
,我会在 C# 中得到0x0000000100000000
。
我该如何纠正这个问题?
实际上是alignment的问题。 我的 64 位数字在结构中没有对齐。 在结构定义之前添加了#pragma pack(4)。 然后它起作用了。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.