gpt4 book ai didi

c# - 将结构编码到非托管数组

转载 作者:行者123 更新时间:2023-11-30 15:48:29 25 4
gpt4 key购买 nike

我有一个 C# 结构来表示笛卡尔 vector ,如下所示:

public struct Vector  
{
private double x;
private double y;
private double z;

//Some properties/methods
}

现在我有一个非托管 C dll,我需要使用 P/Invoke 调用它。一些方法需要一个 double[3] 参数。

非托管 C 签名类似于

void Cross(double a[3], double b[3], double c[3]);  

有什么方法可以设置 P/Invoke 签名,以便我可以传递 Vector 结构的实例并将它们透明地编码到非托管 double[3]?我还需要双向编码,因为非托管函数需要将输出写入参数数组,所以我想我需要编码为 LpArray。

最佳答案

您可以在您的 P/Invoke 声明中放置,成员将在所有当前 CPU 架构上正确对齐,以便在非托管代码中作为数组可读:

[DllImport("blah.dll")]
private static extern void Cross(ref Vector a, ref Vector b, ref Vector c);

关于c# - 将结构编码到非托管数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2552072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com