P/Invoke-如何使用c函数的结果将访问加倍,该函数将地址返回到加倍数组

本文关键字:函数 地址 返回 数组 Invoke- 结果 访问 何使用 | 更新日期: 2023-09-27 17:57:31

如何从函数fann_run()中获取浮点数组

这是它的C版本。

fann_type *calc_out;
fann_type input[2];
struct fann *ann = fann_create_from_file("xor_float.net");
input[0] = -1;
input[1] = 1;
calc_out = fann_run(ann, input);
printf("xor test (%f,%f) -> %f'n", input[0], input[1], calc_out[0]);
fann_destroy(ann);

我正试图在c#中做到这一点

[DllImport("fannfloat.dll", EntryPoint = "fann_run")]
public static extern IntPtr fann_run(IntPtr _ann, float[] _input);
IntPtr ann = FANN.fann_create_from_file("Arial.net");
IntPtr result = FANN.fann_run(ann,input600);

现在我想使用"result"来访问浮动。我该怎么做?

P/Invoke-如何使用c函数的结果将访问加倍,该函数将地址返回到加倍数组

如果您知道元素的数量,则可以使用Marshal.Copy方法将非托管内存中的值复制到托管数组中:

float[] output = new float[7];
Marshal.Copy(result, output, 0, output.Length);

完成后不要忘记释放result