Mailinglist Archive: opensuse-programming-de (171 mails)
| < Previous | Next > |
RE: ATL/COM -> LINUX
- From: "Rinke, Reiner" <Reiner.Rinke@xxxxxxxxxx>
- Date: Tue, 21 Jan 2003 09:33:27 +0100
- Message-id: <31C491822321D41186FE00508B6D722A06971586@xxxxxxxxxxxxxxxxxxxxx>
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@xxxxxxxx]
Sent: Montag, 20. Januar 2003 16:04
To: Rinke, Reiner; suse-programming@xxxxxxxx
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
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@xxxxxxxx]
Sent: Montag, 20. Januar 2003 16:04
To: Rinke, Reiner; suse-programming@xxxxxxxx
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
| < Previous | Next > |