[英]C# interop : handling pointer-array in unmanaged struct
我正在包装对非托管Aubio库dll(Aubio.org)的一些调用,我想知道处理Aubio样本缓冲区的好方法是什么。
它的定义如下:
// Buffer for real values
struct _fvec_t {
uint length; // length of buffer
uint channels; // number of channels
float **data; // data array of size [length] * [channels]
};
Aubio使用正确设置的数据成员为我创建了结构,因此我得到了IntPtr。 我需要从C#代码读取/写入数据指针。
for (int chan_idx = 0; chan_idx < my_fvec.channels; ++chan_idx)
for (int i=0; i<something; i++)
my_fvec.data[chan_idx][i] = SomeRandomValue();
将C#结构“映射”到fvec_t类型的正确方法是什么,以便我可以正确访问数据成员以对其进行读写?
(或者我应该使用Marshal.Copy,以及如何使用指针数组?)
我以为您可以定义托管结构和PtrToStructure所拥有的内容,然后进行修改,然后再修改StructureToPtr(返回相同的位置),但这可能就这么简单,因为已经分配了内存,并且所有这些都可以读出数组的intptr,然后使用Copy将float数组写入它们:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.