[英]Marshal struct to unmanaged array
我有一个C#结构来表示一个笛卡尔向量,如下所示:
public struct Vector
{
private double x;
private double y;
private double z;
//Some properties/methods
}
现在我有一个非托管的C dll,我需要用P / Invoke调用。 一些方法期望双[3]参数。
非托管C签名就像
void Cross(double a[3], double b[3], double c[3]);
有没有办法设置P / Invoke签名,所以我可以传递我的Vector结构的实例,并透明地编组它们到非托管双[3]? 我还需要双向编组,因为非托管函数需要将输出写入参数数组,所以我想我需要编组为LpArray。
您可以在P / Invoke声明中,成员将在所有当前CPU体系结构上正确对齐,以便作为非托管代码中的数组可读:
[DllImport("blah.dll")]
private static extern void Cross(ref Vector a, ref Vector b, ref Vector c);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.