定义了一个结构体,用
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct StructX
{
public int a1;
public int b;
public int c;
public byte j;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]
public byte[] k;
[MarshalAsAttribute(UnmanagedType.ByValArray, SizeConst = 3, ArraySubType = UnmanagedType.U4)]
public UInt32[] l;
};
MemoryMappedFile memoryFile = MemoryMappedFile.CreateFromFile(pathname, FileMode.Open);
MemoryMappedViewStream mmpv = memoryFile.CreateViewStream();
FileInfo file = new FileInfo(pathname);
long totalBytes = file.Length; //计算总大小
int size = Marshal.SizeOf(typeof(StructA));//结构体大小
using (MemoryMappedViewAccessor accessor = memoryFile.CreateViewAccessor(0, totalBytes))
{
for (long i = 0; i < totalBytes - size; i = i + size)
{
StructA a = new StructA();
accessor.Read(i, out a);
accessor.Read(i, out a);这里报错,说指定的类型必须是不包含引用的结构。啥意思啊,怎么解决啊