Je doit utiliser une bibliothèque dynamique (sous Unixoïde), j'emploi pour cela les fonction POSIX dlopen, dlsym et dlclose mais je me demandais, y'a pas d'autres technique que ca :
... Faire des pointeur de fonctions à outrance, récupérer des fonctions à coup de dlsym ? Bien sûr je ne dois pas utiliser des bibliothèque externe sinon ca sert à rien, c'est dans le cadre d'un petit ensemble de bibliothèques perso qui serviront plus tard dans un plus gros projet, il faut donc que je maîtrise ce côté "dynamique".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 size_t i = 0; C_List * (* fn_new) (void); void (* fn_free) (C_List ** list); C_List_err (* fn_append) (C_List * list, void * data); void * handle = dlopen ("libclist.so", RTLD_LAZY); if (handle != NULL) { fn_new = dlsym (handle, "C_List_new"); list = fn_new (); if (list != NULL) { fn_append = dlsym (handle, "C_List_append"); for (i = 0; i < nblines; i++) { fn_append } } fn_free = dlsym (handle, "C_List_free"); fn_free (&list); dlclose (handle);
Donc ma question est... y'a rien de plus propre ?
![]()
Partager