Problems with intersci

classic Classic list List threaded Threaded
2 messages Options
Alfredo Jaramillo-2 Alfredo Jaramillo-2
Reply | Threaded
Open this post in threaded view
|

Problems with intersci

Hi!, I'm trying to use a C routine on the interface of Scilab 4.1.2
The C file is cthomas.c and contains:

#include "global.h"
#include "machine.h"

int C2F(cthomas)(double *b, double *a,double *c, double *q,int *n, double *x){
        int i,j;
        double *u=malloc(sizeof(double)*(*n));
        double *y=malloc(sizeof(double)*(*n));

        u[0]=a[0];
        for(i=0;i<*n-1;i++){
                x[i]=b[i]/u[i];
                u[i+1]=a[i+1]-x[i]*c[i];
        }
        y[0]=q[0];

        for(i=0;i<*n-1;i++)
                y[i+1]=q[i+1]-x[i]*y[i];

        x[*n-1]=y[*n-1]/u[*n-1];
        for(i=*n-2;i>=0;i--)
                x[i]=(y[i]-c[i]*x[i+1])/u[i];

        free(u);free(y);
        return(0);
}

I Compilate this file with:
gcc -I ~/bin/scilab-4.1.2/routines -c cthomas.c -o cthomas.o

No warning message appears. In the same directory I create the file thomas.desc, that contains:

thomas  b       a       c       q
b       column  n-1
a       column  n
c       column  n-1
q       column  n
x       column  n

cthomas  b       a       c       q       n       x
b       double
a       double
c       double
q       double
n       integer
x       double

out     sequence        x
****************************

Before compilation I execute:

ajaramillo@ajaramillo:~/work/miguel/scilab> ~/bin/scilab-4.1.2/bin/intersci-n thomas

INTERSCI Version 3.0 (SEP 2000)
    Copyright (C) INRIA/ENPC All rights reserved

**************************
processing SCILAB function "thomas"
  generating C interface for function (cthomas) Scilab function"thomas"
C file "thomas.c" has been created
Scilab file "thomas.sce" has been created

file "thomas_builder.sce" has been created

Now, on scilab I wrote the order:
-->exec "thomas_builder.sce"
 
-->// generated with intersci
 
-->ilib_name = 'libthomas'              // interface library name
 ilib_name  =
 
 libthomas  
 
 
-->table =["thomas","intsthomas"];
 
-->ilib_build(ilib_name,table,files,libs);
ilib_build(ilib_name,table,files,libs);
                             !--error 4
undefined variable : files                  
at line       5 of exec file called by :   
exec "thomas_builder.sce"
 
 
-->

I don't understand this...moreover, the file thomas.sce wasn't exists

Trying to fix this.. on base of the examples from <SCIDIR>/examples/intersci-examples-so/

I modificate the thomas_builder.sce file on the next way:


// generated with intersci
ilib_name = 'libthomas'         // interface library name
libs=[];
files=['cthomas.o'];
table =["thomas","intsthomas"];
ilib_build(ilib_name,table,files,libs);

Now, when I execute the builder:

-->exec "thomas_builder.sce"
 
-->// generated with intersci
 
-->ilib_name = 'libthomas'              // interface library name
 ilib_name  =
 
 libthomas  
 
-->libs=[];
 
-->files=['cthomas.o'];
 
-->table =["thomas","intsthomas"];
 
-->ilib_build(ilib_name,table,files,libs);
   generate a gateway file
   generate a loader file
   generate a Makefile: Makelib
   running the makefile
   compilation of cthomas
   building shared library (be patient)

And before that, I execute:
-->exec "loader.sce"
 
-->// generated by builder.sce: Please do not edit this file
 
-->// ------------------------------------------------------
 
-->libthomas_path=get_file_path('loader.sce');
 
-->functions=[ 'thomas';
-->];
 
-->addinter(libthomas_path+'/libthomas.so','libthomas',functions);
/home/ajaramillo/work/miguel/scilab/libthomas.so: undefined symbol: intsthomas
addinter(libthomas_path+'/libthomas.so','libthomas',functions);
                                                       !--error 236
link: the shared archive was not loaded
at line       6 of exec file called by :   
exec "loader.sce"
 
 
-->

But again an error appears, this time I don't found a way to "fix" it

Can you help me with this please? Thanks in advance


Alfredo Jaramillo Palma
Mathematics Engineering Student
La Frontera University
Chile
Alfredo Jaramillo-2 Alfredo Jaramillo-2
Reply | Threaded
Open this post in threaded view
|

Problems with intersci

Hi!, I'm trying to use a C routine on the interface of Scilab 4.1.2
The C file is cthomas.c and contains:

#include "global.h"
#include "machine.h"

int C2F(cthomas)(double *b, double *a,double *c, double *q,int *n, double *x){
        int i,j;
        double *u=malloc(sizeof(double)*(*n));
        double *y=malloc(sizeof(double)*(*n));

        u[0]=a[0];
        for(i=0;i<*n-1;i++){
                x[i]=b[i]/u[i];
                u[i+1]=a[i+1]-x[i]*c[i];
        }
        y[0]=q[0];

        for(i=0;i<*n-1;i++)
                y[i+1]=q[i+1]-x[i]*y[i];

        x[*n-1]=y[*n-1]/u[*n-1];
        for(i=*n-2;i>=0;i--)
                x[i]=(y[i]-c[i]*x[i+1])/u[i];

        free(u);free(y);
        return(0);
}

I Compilate this file with:
gcc -I ~/bin/scilab-4.1.2/routines -c cthomas.c -o cthomas.o

No warning message appears. In the same directory I create the file thomas.desc, that contains:

thomas  b       a       c       q
b       column  n-1
a       column  n
c       column  n-1
q       column  n
x       column  n

cthomas  b       a       c       q       n       x
b       double
a       double
c       double
q       double
n       integer
x       double

out     sequence        x
****************************

Before compilation I execute:

ajaramillo@ajaramillo:~/work/miguel/scilab> ~/bin/scilab-4.1.2/bin/intersci-n thomas

INTERSCI Version 3.0 (SEP 2000)
    Copyright (C) INRIA/ENPC All rights reserved

**************************
processing SCILAB function "thomas"
  generating C interface for function (cthomas) Scilab function"thomas"
C file "thomas.c" has been created
Scilab file "thomas.sce" has been created

file "thomas_builder.sce" has been created

Now, on scilab I wrote the order:
-->exec "thomas_builder.sce"
 
-->// generated with intersci
 
-->ilib_name = 'libthomas'              // interface library name
 ilib_name  =
 
 libthomas  
 
 
-->table =["thomas","intsthomas"];
 
-->ilib_build(ilib_name,table,files,libs);
ilib_build(ilib_name,table,files,libs);
                             !--error 4
undefined variable : files                  
at line       5 of exec file called by :   
exec "thomas_builder.sce"
 
 
-->

I don't understand this...moreover, the file thomas.sce wasn't exists

Trying to fix this.. on base of the examples from <SCIDIR>/examples/intersci-examples-so/

I modificate the thomas_builder.sce file on the next way:


// generated with intersci
ilib_name = 'libthomas'         // interface library name
libs=[];
files=['cthomas.o'];
table =["thomas","intsthomas"];
ilib_build(ilib_name,table,files,libs);

Now, when I execute the builder:

-->exec "thomas_builder.sce"
 
-->// generated with intersci
 
-->ilib_name = 'libthomas'              // interface library name
 ilib_name  =
 
 libthomas  
 
-->libs=[];
 
-->files=['cthomas.o'];
 
-->table =["thomas","intsthomas"];
 
-->ilib_build(ilib_name,table,files,libs);
   generate a gateway file
   generate a loader file
   generate a Makefile: Makelib
   running the makefile
   compilation of cthomas
   building shared library (be patient)

And before that, I execute:
-->exec "loader.sce"
 
-->// generated by builder.sce: Please do not edit this file
 
-->// ------------------------------------------------------
 
-->libthomas_path=get_file_path('loader.sce');
 
-->functions=[ 'thomas';
-->];
 
-->addinter(libthomas_path+'/libthomas.so','libthomas',functions);
/home/ajaramillo/work/miguel/scilab/libthomas.so: undefined symbol: intsthomas
addinter(libthomas_path+'/libthomas.so','libthomas',functions);
                                                       !--error 236
link: the shared archive was not loaded
at line       6 of exec file called by :   
exec "loader.sce"
 
 
-->

But again an error appears, this time I don't found a way to "fix" it

Can you help me with this please? Thanks in advance


Alfredo Jaramillo Palma
Mathematics Engineering Student
La Frontera University
Chile