Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

dlopen de plusieurs lib

3 réponses
Avatar
Anthony Catel
Bonjour,

Voici mon problème :

J'ai un programme qui load deux lib (A et B). Je ne connais pas à
l'avance dans quel ordre dlopen() va les charger.
Dans la lib A j'aimerai utiliser des "symboles" de la lib B. Le problème
c'est que si la lib A est chargée avant la lib B elle me renvoi
forcement une erreur :
" undefined symbol: foo".

Quel est le meilleurs moyen pour pallier à ce genre de problème ?
Charger la lib B dans chaque lib où je l'utilise ?

En gros c'est un système de plugins où certain aurais des dépendances
d'autres plugins.

Merci ;)

3 réponses

Avatar
espie
In article <49a1a445$0$20340$,
Anthony Catel wrote:
Bonjour,

Voici mon problème :

J'ai un programme qui load deux lib (A et B). Je ne connais pas à
l'avance dans quel ordre dlopen() va les charger.
Dans la lib A j'aimerai utiliser des "symboles" de la lib B. Le problème
c'est que si la lib A est chargée avant la lib B elle me renvoi
forcement une erreur :
" undefined symbol: foo".

Quel est le meilleurs moyen pour pallier à ce genre de problème ?
Charger la lib B dans chaque lib où je l'utilise ?

En gros c'est un système de plugins où certain aurais des dépendances
d'autres plugins.



Il faut que tu affines ton edition de liens: tes plugins doivent referencer
les autres plugins, de sorte que ton dlopen, s'il est bien foutu, va tout
charger quand il y aura besoin.

Normalement, ca fonctionne... meme si ca veut dire que les gens qui ecrivent
dlopen() ont du avaler pas mal de cachets d'aspirine...
Avatar
Anthony Catel
En gros dans mon exemple je doit link A avec -lB ?


Marc Espie a écrit :
In article <49a1a445$0$20340$,
Anthony Catel wrote:
Bonjour,

Voici mon problème :

J'ai un programme qui load deux lib (A et B). Je ne connais pas à
l'avance dans quel ordre dlopen() va les charger.
Dans la lib A j'aimerai utiliser des "symboles" de la lib B. Le problème
c'est que si la lib A est chargée avant la lib B elle me renvoi
forcement une erreur :
" undefined symbol: foo".

Quel est le meilleurs moyen pour pallier à ce genre de problème ?
Charger la lib B dans chaque lib où je l'utilise ?

En gros c'est un système de plugins où certain aurais des dépendances
d'autres plugins.



Il faut que tu affines ton edition de liens: tes plugins doivent referencer
les autres plugins, de sorte que ton dlopen, s'il est bien foutu, va tout
charger quand il y aura besoin.

Normalement, ca fonctionne... meme si ca veut dire que les gens qui ecrivent
dlopen() ont du avaler pas mal de cachets d'aspirine...


Avatar
Anthony Catel
Ca voudrai dire que mon programme principal ainsi que les lib qui
utilisent "B" vont l'a charger ? (mon programme principal avec dlopen et
les lib dès quelles sont chargées)

Merci ;-)

Anthony Catel a écrit :
En gros dans mon exemple je doit link A avec -lB ?


Marc Espie a écrit :
In article <49a1a445$0$20340$,
Anthony Catel wrote:
Bonjour,

Voici mon problème :

J'ai un programme qui load deux lib (A et B). Je ne connais pas à
l'avance dans quel ordre dlopen() va les charger.
Dans la lib A j'aimerai utiliser des "symboles" de la lib B. Le problème
c'est que si la lib A est chargée avant la lib B elle me renvoi
forcement une erreur :
" undefined symbol: foo".

Quel est le meilleurs moyen pour pallier à ce genre de problème ?
Charger la lib B dans chaque lib où je l'utilise ?

En gros c'est un système de plugins où certain aurais des dépendances
d'autres plugins.


Il faut que tu affines ton edition de liens: tes plugins doivent referencer
les autres plugins, de sorte que ton dlopen, s'il est bien foutu, va tout
charger quand il y aura besoin.

Normalement, ca fonctionne... meme si ca veut dire que les gens qui ecrivent
dlopen() ont du avaler pas mal de cachets d'aspirine...