f = dlsym(lib, symbol_name, return_type, params_types)
| 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. |
| Parameter | Description |
|---|---|
| f | a dlsym handle. |
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.
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);
run([modulepath('dynamic_link'), '/examples/call_c.m']);
run([modulepath('dynamic_link'), '/examples/call_fortran.m']);
| Version | Description |
|---|---|
| 1.0.0 | initial version |