您有一个采用字节数组的结构
byte[]
但是,该数组的大小取决于您提交的图像(宽度x高度)
所以……你怎么办
[MarshalAs(UnmanagedType.ByValArray, SizeConst = ???)]
public Byte[] ImageData;
处理从 C# 传递到 C dll 的字节数组时,sizeconst 是必须具备的吗?
您有一个采用字节数组的结构
byte[]
但是,该数组的大小取决于您提交的图像(宽度x高度)
所以……你怎么办
[MarshalAs(UnmanagedType.ByValArray, SizeConst = ???)]
public Byte[] ImageData;
处理从 C# 传递到 C dll 的字节数组时,sizeconst 是必须具备的吗?
您需要更改编组类型。如果您作为 ByValArray 编组,则需要 SizeConst,但对于其他类型则不需要。有关详细信息,请查看UnmanagedType 枚举。
我的怀疑是您想编组为指向数组的 C 指针:
[MarshalAs(UnmanagedType.LPArray)]
这将导致它编组到标准 C 数组 (BYTE*),因此只传递一个指针。这样做可以让您传递任何大小的数组。通常,您还希望将数组大小作为另一个参数(或图像宽度/高度/bpp,它提供相同的信息)传递,因为 C/C++ 中无法轻松说明这一点。