【发布时间】:2010-05-28 13:19:37
【问题描述】:
我有一个动态长度的结构:
[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)]
更新: c 结构
struct PktAck
{
int code;
char* text;
}
【问题讨论】:
-
请给我们看C
struct。 -
嗨,我也有同样的问题。你得到解决方案了吗?谢谢,Ofir
标签: c# .net string dynamic marshalling