Chargement RTL de librairies dynamiques sous
SebManfred
Messages postés
484
Statut
Membre
-
SebManfred Messages postés 484 Statut Membre -
SebManfred Messages postés 484 Statut Membre -
Bonjour,
Je cherche à charger une librairie dynamique sous AIX via dlopen
la librairie semble compilée correctement et le chargement "normal" ne pose pas de problème
le chargement dynamique est effectué comme il suit
les objets statiques sont compilés comme il suit :
xlC_r -o monobjet.o -c monfichiersource.c
les objets dynamiques sont créés à partir des objets statiques comme il suit
xlC_r -G -o monobjetdynamique.so monobjet.o -bnoentry -bexpall -lc
la librairie est empaquetée comme il suit
ar r malib.a monobjetdynamique.so
mon programme est généré comme il suit
xlC_r -o main.o -c main.c
xlC_r -o programme main.o
dans le programme, je cherche à charger dynamiquement la lib via dlopen
void * handle;
void (* DisplayD)(int,char**);
handle = dlopen("malib.a",RTLD_LAZY|RTLD_GLOBAL);
if(handle == NULL)
{
printf(dlerror());
return;
}
if( DisplayD = (void (*) (int))dlsym(handle,"testfunction") )
{
(*testfunction)(1);
}
dlclose(handle)
tout compile, mais à l'exécution, il me marque
could not load module mylib.a
the module has an invalid magic number
si à la place de malib.a je mets monobjetdynamique.so, ca marche, mais ca ne me convient pas. pour uniformiser le code du projet et faire quelque chose de propre, j'ai besoin de travailler sur les libs (fichier.a) et non pas les objets
si je veux appeler la fonction testfunction proprement dans mon main.c, ce qui revient à modifier un tantinet le code, mettre des #include et modifier la ligne de commande de création de mon executable par
xlC_r -o main.o -c main.c -Iinclude
xlC_r -o programme malib.a main.o
ca fonctionne, donc à priori ma lib est bonne
si quelqu'un connait le fonctionnement de la chose et a une idée, ça pourrait beaucoup m'aider
merci d'avance
Seb
Je cherche à charger une librairie dynamique sous AIX via dlopen
la librairie semble compilée correctement et le chargement "normal" ne pose pas de problème
le chargement dynamique est effectué comme il suit
les objets statiques sont compilés comme il suit :
xlC_r -o monobjet.o -c monfichiersource.c
les objets dynamiques sont créés à partir des objets statiques comme il suit
xlC_r -G -o monobjetdynamique.so monobjet.o -bnoentry -bexpall -lc
la librairie est empaquetée comme il suit
ar r malib.a monobjetdynamique.so
mon programme est généré comme il suit
xlC_r -o main.o -c main.c
xlC_r -o programme main.o
dans le programme, je cherche à charger dynamiquement la lib via dlopen
void * handle;
void (* DisplayD)(int,char**);
handle = dlopen("malib.a",RTLD_LAZY|RTLD_GLOBAL);
if(handle == NULL)
{
printf(dlerror());
return;
}
if( DisplayD = (void (*) (int))dlsym(handle,"testfunction") )
{
(*testfunction)(1);
}
dlclose(handle)
tout compile, mais à l'exécution, il me marque
could not load module mylib.a
the module has an invalid magic number
si à la place de malib.a je mets monobjetdynamique.so, ca marche, mais ca ne me convient pas. pour uniformiser le code du projet et faire quelque chose de propre, j'ai besoin de travailler sur les libs (fichier.a) et non pas les objets
si je veux appeler la fonction testfunction proprement dans mon main.c, ce qui revient à modifier un tantinet le code, mettre des #include et modifier la ligne de commande de création de mon executable par
xlC_r -o main.o -c main.c -Iinclude
xlC_r -o programme malib.a main.o
ca fonctionne, donc à priori ma lib est bonne
si quelqu'un connait le fonctionnement de la chose et a une idée, ça pourrait beaucoup m'aider
merci d'avance
Seb
A voir également:
- Chargement RTL de librairies dynamiques sous
- Tableaux croisés dynamiques - Guide
- Échec du chargement du module twitch ✓ - Forum Virus
- Impossible d'afficher le rapport de tableau croisé dynamique sur un rapport existant ✓ - Forum Excel
- Échec du chargement du module. ✓ - Forum Virus
- Logitech g hub chargement infini - Forum Logiciels