【发布时间】:2010-03-31 10:29:09
【问题描述】:
我有一个 C# 结构来表示笛卡尔向量,如下所示:
public struct Vector
{
private double x;
private double y;
private double z;
//Some properties/methods
}
现在我有一个需要使用 P/Invoke 调用的非托管 C dll。有些方法需要一个 double[3] 参数。
非托管 C 签名类似于
void Cross(double a[3], double b[3], double c[3]);
有什么方法可以设置 P/Invoke 签名,以便我可以传递 Vector 结构的实例并将它们透明地编组到非托管双精度 [3]?我还需要双向编组,因为非托管函数需要将输出写入参数数组,所以我想我需要编组为 LpArray。
【问题讨论】:
标签: c# c pinvoke marshalling