我想在scilab中调用C函数。我试图遵循“召唤”惯例,但它不适合我,因此我正在寻求帮助。
C函数:
f1=['void add1(double a,double b,double *c)
{ *c=a+b; }'];
mputl(f1,'fun1.c')
ilib_for_link('add1','fun1.c',[],"c")
a=1.1;b=2.2;
c=call('add1',a,1,'d',b,2,'d','out',[1,1],3,'d');
disp(c)
f1函数应该只添加两个实数并通过引用传递它。结果总是超出范围。 你能帮我指出我做错了什么以及如何在scilab中正确调用C函数吗?
谢谢。
彼得答案 0 :(得分:0)
如果你创建了所有参数指针,它就可以了。另外,不要忘记通过执行loader.sce
来加载该函数工作示例:
f1=['void add1(double* a,double* b,double *c){ *c=*a+*b; }'];
mputl(f1,'fun1.c')
ilib_for_link('add1','fun1.c',[],"c")
a=1.1;
b=2.2;
exec loader.sce
[c] = call('add1', a, 1,'d', b,2,'d', 'out',[1,1],3,'d');
disp(c)