1.4 Conclusion

Le truc qui a dû vous choquer c'est la ligne qui permet de récupérer la fonction cos :

1
*(void **) (&cosine) = dlsym(handle, "cos");

Et si vous avez essayer de triturer cette expression pour essayer d'en faire quelque chose de plus simple vous avez sans doute remarquer que GCC n'est pas de votre avis, et comme il a toujours raison... il faut faire avec.

Comme cette syntaxe n'est quand même pas évidente à appréhender, je ne peux que vous conseiller de vous faire une macro pour qu'elle fasse le boulot à votre place :

1
#define MY_DLSYM(X,Y,Z) *(void **)(&X) = dlsym(Y, Z);

Et quand vous aurez besoin de récupérer une fonction :

1
MY_DLSYM(cosine, handle,"cos")

Notez que je n'ai pas oublier de ';' puisque il est présent dans la macro. Mais vous pouvez faire comme vous voulez.