【问题标题】:scilab call C functionscilab 调用 C 函数
【发布时间】:2013-02-05 08:27:53
【问题描述】:

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

谢谢。

彼得

【问题讨论】:

    标签: c call scilab


    【解决方案1】:

    如果您将所有参数都设为指针,则可以正常工作。另外不要忘记通过执行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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多