Bonjour,

Je tente de lancer depuis un code une fonction se trouvant dans une librairie. Pour ce faire, j'utilise dlopen et dlsym :
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);
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 !!