Bonjour,
Je tente de lancer depuis un code une fonction se trouvant dans une librairie. Pour ce faire, j'utilise dlopen et dlsym :
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).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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 !!
Partager