如何解决MATLAB Coder可以生成将指针作为输入的函数吗?
我想使用MATLAB Coder生成可执行文件(或目标文件中的函数),该可执行文件接受指向数组的指针作为输入。
我使用libpointer
创建了一个指针对象,然后尝试使用以下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的注意,我想我应该问以下问题。
- 编码器能否使
resample
之类的函数与指针一起使用? - 引擎盖下是否已经使用了指针,让我不必担心?
解决方法
如果仅使用固定大小的数组输入生成代码,则生成的代码将能够接受指针。例如:
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
。当在调用站点上也使用与输入和输出相同的变量来调用时,用与输入和输出相同的变量声明的函数通常会产生按引用传递。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。