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.

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