SCIDIR/examples/interface-tutorial-so
contains the
material necessary to create a dynamic library (or a dll in the Windows environment) that can be dynamically linked with Scilab.
This directory contains the following file called builder.sce
:
// This is the builder.sce // must be run from this directory ilib_name = "libtutorial" // interface library name files = ["intview.o","intmatmul.o"] // objects files // libs = [] // other libs needed for linking table = [ "view", "intview"; // table of (scilab_name,interface-name) "matmul","intmatmul"]; // // do not modify below // ---------------------------------------------- ilib_build(ilib_name,table,files,libs)The user should edit this file, which is a Scilab script, and in particular the variables
files
(a row vector of strings)
anf table
a two column matrix of strings.
files
should contain the names of all the object files
(gateway functions and C functions called).
Each row of table
is a pair of two strings: the first is the
name of the Scilab function, and the second the name of the
gateway function. Here we have two functions view
which has
intview
as gateway and matmul
which has intmatmul
as gateway. This is the example given above.
After the file builder.sce
has been edited, it should be
executed in Scilab by the command
-->exec builder.sceScilab then generates the file
loader.sce
:
// generated by builder.sce libtutorial_path=get_file_path('loader.sce'); functions=[ 'view'; 'matmul'; ]; addinter(libtutorial_path+'/libtutorial.so','libtutorial',functions);This file should be executed in Scilab to load the newly created function
matmul
-->exec loader.sce -->A=rand(2,3);B=rand(3,3);C=matmul(A,B); //C=A*BSumming up, to build a dynamic interface the user has to write a gateway function (such as
intmatmul
), then he has to edit
the file builder.sce
(or a copy of it) to enter
the name of the Scilab function and the necessary C functions,
then he has to execute the script builder.sce
. This
produce the dynamic library and the script loader.sce
.
Then each time he needs the newly created function(s), he has to
execute the script loader.sce
.