Linken von libs, die dieselben Funktionsnamen enthalten.

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
weedy
Beiträge: 585
Registriert: 02.11.2002 21:47:49
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Linken von libs, die dieselben Funktionsnamen enthalten.

Beitrag von weedy » 24.11.2004 02:05:39

Hallo.

Mit scheint, richtige Kapselung von Libs, wie ich sie gerne hätte gibt es wohl nicht. Nehmen wir doch einmal an, ich wöllte 2 Libs W und X zu einem Programm dazulinken, die je eine Funktion gleichen Namens aber unterschiedlicher Funktionalität besäßen. Dann kann ich die nur mit

Code: Alles auswählen

dlopen( "W", RTLD_LAZY|RTLD_LOCAL);
dlopen( "X", RTLD_LAZY|RTLD_LOCAL);
laden. Das würde theoretisch soweit klappen, aber wie sieht es aus, wenn diese Lib X (und W) eine weitere Lib Y (Z) benötigt und diese Lib Y (Z) wiederum ein Symbol aus X (W) referenziert (z.B. wie bei Python)? Dann funktioniert das nämlich nicht mehr, also muß ich die Libs global öffnen:

Code: Alles auswählen

dlopen( "W", RTLD_LAZY|RTLD_GLOBAL);
dlopen( "X", RTLD_LAZY|RTLD_GLOBAL);
und schon habe ich wieder den Namenskonflikt. Gibt es eine Lösung dafür?

weedy.

Antworten