[英]How to convert C# struct to C struct?
[StructLayout(LayoutKind.Sequential, Size = 280), Serializable]
public struct AESContext
{
/// int nr;
[MarshalAsAttribute(UnmanagedType.I4, SizeConst = 4)]
public int nr;
/// unsigned long *rk;
[MarshalAsAttribute(UnmanagedType.U4, SizeConst = 4)]
public uint rk;
// unsigned long buf[68];
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 68)]
public uint[] buf;
}
到目前為止,這是C#結構。 每個字段上方的注釋都用C鍵入。如果有人可以驗證,我很樂意。
聽起來您正在嘗試獲取成員內容中定義的C結構的C#結構。 如果是這樣,那么我相信您需要以下內容
[StructLayout(LayoutKind.Sequential), Serializable]
public struct AESContext
{
/// int nr;
public int nr;
/// unsigned long *rk;
public UIntPtr rk;
// unsigned long buf[68];
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 68)]
public uint[] buf;
}
基本變化
StructLayout
指定SizeConst
,除非您嘗試創建一個大小(通常)大於其內容的結構。 這樣做不是很常見 MarshalAs
IntPtr
或UIntPtr
來調用指針類型。 它們的大小在32位和64位平台之間適當變化
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.