Hallo, noch mal zu den shared libraries: man kann sie auch dynamisch (zur Laufzeit) laden; so funktionieren die meisten Systemlibraries (*.so) von Linux auch (und wenn eine neue Linux Version eingespielt wird, muessen die Applikationen nicht neu gelinkt werden!). Das ist dasselbe Prinzip wie bei Win-Dlls. Fuer die meisten Situationen reicht das Bibliothekskonzept und der Austausch von Bibliotheken. COM/DCOM ist m. E. zu kompliziert und zu wenig portabel; aber das ist ja wohl auch beabsichtigt ;-) ! Habe selber viel gelernt aus "Anwendungen entwickeln unter LINUX", wo die dl (=dynamic link)-Schnittstelle gut beschrieben ist. Bei mir funktioniert ein Versionswechsel problemlos nur durch Austausch der *.DLL (unter Win) bzw. der *.so (0unter LINUX/UNIX etc.) ohne neu zu linken. Natuerlich darf die Funktionsschnittstelle sich dabei nicht aendern. (Ist also nicht nur Theorie, was ich da erzaehle). So long -----Original Message----- From: mohammad Gharbalchi [mailto:mohammad@ghbss.de] Sent: Montag, 20. Januar 2003 16:04 To: Rinke, Reiner; suse-programming@suse.com Subject: Re: ATL/COM -> LINUX Hallo und vielen Dank Reiner , so weit ich informiert bin shared libs sind dafür da um den Speicherbedarf und ladezeit der Bibliotheken gering zuhalten, da diese von mehrere Programmen parallel benutzt werden können. Selbst bei der Windofs versionen hat man ständig bis vor kurzem die VB-Bibliotheken gleich mit dem programm liefern müssen, da diese von version zu version unterschiedlich waren. Dies hat den hintergrund, dass der linker so genannte Symbol adressen berechnet und festgehalten hat, jetzt geht man her und ändert den Bibiothek so stimmen die alle adressen nicht mehr und daher können die programme ohne damaligen (Linkzeit) bibliothek nicht funktionieren. Diese wird noch klarer wenn man bei bilden eines bibliothekes Listing mit erzeugt und nach kurze änderung es vergleicht. Aber das mit dem nachliefern der Teile als so genannten Komponents (M$) ist was anderes. Da diese über Interface ansprechbar sind und der Linker merkt sich ein Nummer (Interface ID) und spricht diese anhand sein eindeutigen ID , welches unter M$ registry wieder zufinden ist. hier kann man auch gleich nachschlagen welche Interfaces noch zu einem Bibliothek freigegeben sind. Diese zugriff auf Interfaces geschieht nur im Laufzeit und nicht bei Linken des programmes. Wenn man Sharedlibraries auf diesem weg einsetzen kann, dann habe das gefunden wasich seit lange Zeit suche. Eine frage noch hast du mal versucht auf diese weise vorzu gehen? Ich meine erst ein bibliothek bilden, dann das programm linken. Jetzt wird das bibliothek geändert , und neu gebildet. die frage lautet jetzt ob das programm ohne neu zulinken funktioniert ? ???? wennja dann braucht man ja das Programm bei Update eines programmes nicht mit zuliefern oder ? vielen herzlichen dank Mohammad