Appel de fonction via dlsym
Bonjour,
Je tente de lancer depuis un code une fonction se trouvant dans une librairie. Pour ce faire, j'utilise dlopen et dlsym :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
if (!((lib = dlopen(data.lib.c_str(), RTLD_LAZY)))){
printf("Error dlopen\n");
exit(EXIT_FAILURE);
}
if (!(funct = (void (*)()) dlsym(lib, data.func.c_str()))) {
dlclose(lib);
printf("Error dlsym\n");
exit(EXIT_FAILURE);
}
funct(data.arg); |
Les chaines de caractères sont contenues dans des variables car je veux lancer n'importe quelle fonction, mais qui ne prendrait toujours qu'un argument (une structure qui peut varier d'une fonction à une autre).
A la compilation j'ai une erreur à l'appel de funct :
manager.cpp:428: error: too many arguments to function
J'ai fait un programme test où je passe le nom de la librairie et de la fonction en dur et ça fonctionne bien. Savez-vous pourquoi cela ne marche plus et comment remédier au problème svp ?
Merci !!