dlsym
Charge un symbole C/Fortran depuis une bibliothèque dynamique
📝Syntaxe
f = dlsym(lib, symbol_name, return_type, params_types)
📥Arguments d'entrée
Paramètre 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.
📤Arguments de sortie
Paramètre Description
f a dlsym handle.
đź“„Description

dlsym récupère l'adresse d'une fonction exportée en tant que handle dlsym.

Si le symbolname n'est pas trouvé, Nelson tente de trouver des variantes du nom selon ces règles (dans cet ordre) :

_symbolname

symbolname

symbolname_

_symbolname_

_SYMBOLNAME

SYMBOLNAME

SYMBOLNAME_

_SYMBOLNAME_

Le nom de symbole utilisé est disponible dans le champ prototype du handle retourné.

Si plusieurs noms de symboles sont trouvés, une erreur est levée avec les noms possibles.

Attention : si les types sont mal définis, l'appel d'une fonction étrangère peut provoquer des comportements imprévus (plantage).

đź’ˇExemples
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']);
đź”—Voir aussi
dlcallC/Nelson equivalent data types
đź•”Historique des versions
Version Description
1.0.0 version initiale
Modifier cette page sur GitHub