dlsym
Loads a C/Fortran symbol for an dynamic library.
📝Syntax
f = dlsym(lib, symbol_name, return_type, params_types)
📥Input Arguments
Parameter Description
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 Arguments
Parameter Description
f a dlsym handle.
📄Description

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

ifsymbolname 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
dlcallC/Nelson equivalent data types
🕔Version History
Version Description
1.0.0 initial version
Edit this page on GitHub