Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何将一个整数数组从Rust返回到C?_C#_Rust - Fatal编程技术网

C# 如何将一个整数数组从Rust返回到C?

C# 如何将一个整数数组从Rust返回到C?,c#,rust,C#,Rust,我正在尝试在C中使用这个Rust函数: 酒吧外间可能移动si:i8,j:i8,k:i8->[i8;512] 我用C代码写了这个签名: [DllImportmy_图书馆] 私有静态外部字节[]获取可能的移动字节i、字节j、字节k; 这不起作用: 未处理的异常。System.Runtime.InteropServices.MarshalDirectiveException:无法封送“返回值”:无效的托管/非托管类型组合。 方法签名是否不正确?假设Rust导出C样式数组,封送拆收器将无法将其转换为托管

我正在尝试在C中使用这个Rust函数:

酒吧外间可能移动si:i8,j:i8,k:i8->[i8;512] 我用C代码写了这个签名:

[DllImportmy_图书馆] 私有静态外部字节[]获取可能的移动字节i、字节j、字节k; 这不起作用:

未处理的异常。System.Runtime.InteropServices.MarshalDirectiveException:无法封送“返回值”:无效的托管/非托管类型组合。
方法签名是否不正确?

假设Rust导出C样式数组,封送拆收器将无法将其转换为托管数组,因为它不知道长度。似乎有两种选择:

将属性添加到:[MarshalAsUnmanagedType.LPArray,SizeConst=512] 将返回类型更改为IntPtr,并手动将其转换为数组。看见请记住,返回的内存可能需要以某种方式取消分配。
很难回答你的问题,因为它没有包含一个。我们无法说出代码中存在哪些板条箱及其版本、类型、特征、字段等。如果您试图重现您的错误(如果可能的话),或者在全新的货运项目中,那么我们将更容易帮助您,然后您的问题将包括附加信息。您可以使用以下方法减少在此处发布的原始代码。谢谢看起来你的问题可能会由你的答案来回答。如果没有,请回答您的问题以解释差异。否则,我们可以将此问题标记为已回答。请检查我的编辑:那么可能;