gpt4 book ai didi

c# - 从 C++ 到 C# 的结构

转载 作者:行者123 更新时间:2023-11-30 01:56:07 25 4
gpt4 key购买 nike

我有一个项目,它使用了一个主要基于 C++ 构建的库。带有此库的交付 DLL,我已导入到我的 C# 项目中。在Unity中导入如下方法后:

    [DllImport("pst")]
private static extern int pst_get_sensor(PSTSensor sensor);

我需要这个 PSTSensor 结构,所以实际使用该方法。在 C++ .h 文件中,结构定义为:

struct PSTSensor
{
char name[80]; /**< Device name */
int id; /**< Device identifier (for other tracking interfaces */
float pose[16]; /**< Device pose estimate as row-major matrix */
double timestamp; /**< Time the data was recorded */
};

我尝试用 C# 复制它,结果如下:

    struct PSTSensor{
PSTSensor(char[] name, int id, float[] pose, double timestamp){
this.name = name;
this.id = id;
this.pose = pose;
this.timestamp = timestamp;
}
public char[] name;
public int id;
public float[] pose;
public double timestamp;
}

在该项目随附的示例 C++ 代码中声明调用 pst_get_sensor(&sensor) 这个“&”符号,我不认识?我如何在 C# 中调用此方法并使其工作?

我想我毁了这个结构,因为我以前从未与他们合作过。至少它不会再在编译时抛出错误,但我认为它仍然是错误的。有什么想法吗?

非常感谢,笑脸

最佳答案

我不确定我是否完全回答了你的问题,但在 C++ 中,& 用于通过引用传递参数,这意味着你传递的参数可以在函数内部进行操作。在我看来,原始函数似乎用于填充传感器结构。

int C# 您可以使用 ref 或 out 关键字按引用传递:

private static extern int pst_get_sensor(PSTSensor ref sensor);

为什么要在 C# 实现中添加构造函数?

关于c# - 从 C++ 到 C# 的结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20143910/

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