<< dlopen Dynamic link dlsym_delete >>

dlsym


Loads a C/Fortran symbol for an dynamic library.


Syntax


f = dlsym(lib, symbol_name, return_type, params_types)

Input argument


lib

a dllib handle.

symbolname

a string: symbol to load.

return_type

a string: return type of the C/Fortran function.

params_types

a cell of strings: arguments using a special syntax with differents data types.

Output argument


f

a dlsym handle.

Description


dlsym retrieves the address of an exported function as an dlsym handle.

if symbolname not found, nelson try to find symbol equivalent based on these rules and in this order:

_symbolname

symbolname

symbolname_

_symbolname_

_SYMBOLNAME

SYMBOLNAME

SYMBOLNAME_

_SYMBOLNAME_

symbol name used is available in prototype field of the returned handle.

If multiple symbol names found, an error is raised with possible names.

Warning: Uses wrong datatype definitions a foreign function can terminate unexpectedly.

Examples


lib = dlopen(modulepath('dynamic_link', 'builtin'));
V = double([1 2;3 4]);
% C prototype:
% int dynlibTestMultiplyDoubleArrayWithReturn(double *x, int size)
f = dlsym(lib, 'dynlibTestMultiplyDoubleArrayWithReturn', 'int32', {'doublePtr', 'int32'});
[r1, r2] = dlcall(f, V, int32(numel(V)))
delete(f);
delete(lib);

Call C getpid function

run([modulepath('dynamic_link'), '/examples/call_c.m']);

Call fortran DASUM (blas) function

run([modulepath('dynamic_link'), '/examples/call_fortran.m']);

See also


dlcall, C/Nelson equivalent data types.

History


Version Description
1.0.0 initial version

Author


Allan CORNET

<< dlopen Dynamic link dlsym_delete >>