0

我想在 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 函数吗?

谢谢你。

彼得

4

1 回答 1

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)
于 2013-04-23T11:46:31.073 回答