当执行这一行代码时,将引发此异常。
retobj = Marshal.PtrToStructure( buffer, anytype );
我不知道是什么导致了这一点,因为我试图运行的应用程序在这里的其他开发人员机器上运行得很好。
public static object RawDeserialize(byte[] rawdatas, Type anytype)
{
int rawsize = Marshal.SizeOf(anytype);
if (rawsize > rawdatas.Length)
{
return null;
}
IntPtr buffer = Marshal.AllocHGlobal(rawsize);
object retobj = null;
try
{
Marshal.Copy(rawdatas, 0, buffer, rawsize);
retobj = Marshal.PtrToStructure(buffer, anytype);
}
finally
{
Marshal.FreeHGlobal(buffer);
}
return retobj;
}
我已经尝试过多次修复.NET紧凑型框架,但似乎没有什么可行的,有人知道解决这个问题的方法吗?
发布于 2012-08-27 05:04:10
如果您要调试您的程序,您将发现下面的行抛出异常:
retobj = Marshal.PtrToStructure(buffer, anytype);
主要原因是编组工具不知道如何编组您的类型。这有许多可能的原因,我知道最常见的两个原因是:
中
- solved by prefixing your struct with
StructLayout(LayoutKind.Sequential,Pack = 1)
- solved by prefixing array with
MarshalAs(UnmanagedType.ByValArray,SizeConst = 512)
希望能帮上忙。
https://stackoverflow.com/questions/5260701
复制相似问题