MATLAB Coder 能否生成以指针作为输入的函数?

Can MATLAB Coder generate a function that takes a pointer as input?

我想使用 MATLAB Coder 生成接受数组指针作为输入的可执行文件(或目标文件中的函数)。

我使用了libpointer to create a pointer object and then tried to compile with the following codegen命令:

codegen -config:lib foo -args {coder.typeof(pointer_object_name)}

生成的错误消息报告说 coder.typeof 不支持 lipointer 类型。

我的最终目标是创建可以从另一个 C 函数调用的东西,不需要 MATLAB,并接收指向数组的指针作为输入。 MATLAB Coder 可以生成类似的东西吗?


@ryan-livingston 要求提供我希望 MATLAB Coder 生成的函数的签名。

假设 samples 是一个指向浮点数数组的指针。我想我希望 MATLAB Coder 创建一个 void foo(float *samples) 来对这些浮点数执行各种计算,并可能将结果写入文件或套接字。

既然我得到了@ryan-livingston 的关注,我想我应该问以下问题。

如果您只是生成具有固定大小数组输入的代码,生成的代码将能够接受指针。例如:

function x = foo(x)
x = 2*x;
% You can use MATLAB fopen, fprintf, fwrite here to write x to a file

>> codegen foo -args zeros(10,20) -config:lib -report

生成接口:

void foo(double x[200]);

等同于:

void foo(double *x);

因为数组到指针在 C 中的调用衰减。

请注意,我已经使用 x = foo(x) syntax 让 Coder 通过 x 引用 foo。使用与输入和输出相同的变量声明的函数通常会在调用点使用与输入和输出相同的变量调用时产生引用传递。