gpt4 book ai didi

c# - 32 位操作系统上的 IntPtr 和 64 位操作系统上的 UInt64

转载 作者:行者123 更新时间:2023-11-30 17:22:12 24 4
gpt4 key购买 nike

我正在尝试从 C# 对 C++ 结构进行互操作。结构(在 C# 包装器中)是这样的

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct SENSE4_CONTEXT
{
public System.IntPtr dwIndex; // Or UInt64, depending on platform.
}

底层的C++结构有点不正常。在 32 位操作系统上,dwIndex 必须是 IntPtr 才能使互操作工作,但在 64 位操作系统上,它必须是 UInt64 以便互操作工作。

如何修改上面的结构使其在 32 位和 64 位操作系统上都能工作?

最佳答案

如果 dwIndex 中的“dw”前缀是准确的,那么它听起来像一个 DWORD,它是一个 32 位无符号整数。在这种情况下,您需要使用 UIntPtr,它在 32 位上类似于 UInt32,在 64 位上类似于 UInt64

您的 C++ 程序似乎不太可能在 32 位平台上需要一个有符号整数,而在 64 位平台上需要一个无符号整数(当然也不是不可能)。

关于c# - 32 位操作系统上的 IntPtr 和 64 位操作系统上的 UInt64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2846666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com