我这样导入了DLL:
[Dllimport(“pst”)] private static extern int pst_get_sensor(ref PSTSensor sensor);
PSTSensor是一个结构,在C示例中它被定义为:
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 */};
问题是,除了Int和Double之外,它还使用float,更重要的是数组.数组在C#和C之间有所不同.使用此结构调用pst_get_sensor(ref sensor)时;运行代码时,整个开发环境都崩溃了.
我目前在C#中使用这样的结构:
struct PSTSensor{ public char[] name; public int ID; public float[] pose; public double timestamp; }
我的问题是,我如何创建一个C理解并正确返回的数组?这甚至可能吗?
非常感谢提前,
斯迈利
[StructLayout(LayoutKind.Sequential,CharSet=CharSet.Ansi)]struct PSTSensor{ [MarshalAs(UnmanagedType.ByValTStr,SizeConst = 80)] public string name; public int ID; [MarshalAs(UnmanagedType.ByValArray,SizeConst = 16)] public float[] pose; public double timestamp;}
struct layout属性在这里是可选的,因为它只是重新声明默认值.但是你可以选择保留它以明确你的意图.
总结以上是内存溢出为你收集整理的C#到C数组?全部内容,希望文章能够帮你解决C#到C数组?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)