我有動態長度的結構體:C#編組動態長度字符串
[StructLayout(LayoutKind.Sequential, Pack = 1)]
struct PktAck
{
public Int32 code;
[MarshalAs(UnmanagedType.LPStr)]
public string text;
}
當我轉換字節[]通過這個代碼爲結構:
GCHandle handle = GCHandle.Alloc(bytes_array, GCHandleType.Pinned);
result_struct = (PktAck)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(PktAck));
handle.Free();
我有一個錯誤,因爲結構小於字節[]和「字符串文本」的大小的大小是指向字符串的指針...
如何使用動態字符串? 或者我只能使用這樣的事情:
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1000)]
UPD: C結構
struct PktAck
{
int code;
char* text;
}
請向我們展示C'struct'。 – SLaks 2010-05-28 14:23:45
嗨, 我有同樣的問題。 你有解決方法嗎? 謝謝, Ofir – Ofir 2011-01-30 16:47:01