Difference between revisions of "shared object static load/de"
m |
m (Fixed syntax highlighting; deleted category included in page template) |
||
(5 intermediate revisions by one other user not shown) | |||
Line 1: | Line 1: | ||
− | {{ | + | {{shared object static load}} |
− | + | ||
− | + | ||
− | Dieser Artikel beschäftigt sich mit der Linux(Ubuntu)-Programmierung. | + | Zurück zu den [[Additional information/de|Zusätzlichen Informationen]]. |
− | Das Tutorial, zeigt wie eine Programmbibliothek mit der Dateinamenserweiterung .so (Shared Object) statisch geladen wird. | + | |
− | + | ||
− | <syntaxhighlight> | + | Dieser Artikel beschäftigt sich mit der Linux(Ubuntu)-Programmierung. |
+ | |||
+ | Das Tutorial, zeigt wie eine Programmbibliothek mit der Dateinamenserweiterung .so (Shared Object) <b>statisch</b> geladen wird. | ||
+ | |||
+ | <syntaxhighlight lang=pascal> | ||
library sotest; | library sotest; | ||
Line 14: | Line 18: | ||
− | // | + | // Das Unterprogramm im Shared Object |
function funStringZurueck(strUebergabe: PChar): PChar; | function funStringZurueck(strUebergabe: PChar): PChar; | ||
begin | begin | ||
Line 21: | Line 25: | ||
− | // | + | // Exportiertes Unterprogramm(e) |
exports | exports | ||
funStringZurueck; | funStringZurueck; | ||
Line 29: | Line 33: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | + | ||
− | + | Damit das Shared Objekt vom Betriebssystem (Linux) gefunden werden kann, muss es in <b>einem</b> der folgenden Pfade zu finden sein. | |
− | Damit das Shared Objekt vom Betriebssystem (Linux) gefunden werden kann, muss es in <b>einem</b> der folgenden Pfade zu finden sein. | + | |
− | Ist das Shared Object in keinem dieser Pfade zu finden, dann müssen Sie das Shared Objekt in einen dieser Pfade kopieren. | + | Ist das Shared Object in keinem dieser Pfade zu finden, dann müssen Sie das Shared Objekt in einen dieser Pfade kopieren. |
+ | |||
* Pfad der Umgebungsvariable LD_LIBRARY_PATH | * Pfad der Umgebungsvariable LD_LIBRARY_PATH | ||
* /lib | * /lib | ||
* /usr/lib | * /usr/lib | ||
* /etc/ld.so.conf | * /etc/ld.so.conf | ||
− | + | ||
− | Beim Datenaustausch zwischen dem Unterprogrammen des Shared Object und dem rufenden Programm empfiehlt sich die Verwendung des Datentyps PChar. | + | Beim Datenaustausch zwischen dem Unterprogrammen des Shared Object und dem rufenden Programm empfiehlt sich die Verwendung des Datentyps PChar. |
− | + | ||
− | Einbinden und verwenden der Shared Object-Funktion im eigenen Programm: | + | Einbinden und verwenden der Shared Object-Funktion im eigenen Programm: |
− | <syntaxhighlight> | + | |
+ | <syntaxhighlight lang=pascal> | ||
... | ... | ||
Line 69: | Line 75: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
− | |||
− | |||
− | |||
− |
Latest revision as of 12:41, 26 February 2020
│
Deutsch (de) │
Zurück zu den Zusätzlichen Informationen.
Dieser Artikel beschäftigt sich mit der Linux(Ubuntu)-Programmierung.
Das Tutorial, zeigt wie eine Programmbibliothek mit der Dateinamenserweiterung .so (Shared Object) statisch geladen wird.
library sotest;
{$mode objfpc}{$H+}
uses
SysUtils;
// Das Unterprogramm im Shared Object
function funStringZurueck(strUebergabe: PChar): PChar;
begin
funStringZurueck := PChar(UpperCase(strUebergabe));
end;
// Exportiertes Unterprogramm(e)
exports
funStringZurueck;
begin
end.
Damit das Shared Objekt vom Betriebssystem (Linux) gefunden werden kann, muss es in einem der folgenden Pfade zu finden sein.
Ist das Shared Object in keinem dieser Pfade zu finden, dann müssen Sie das Shared Objekt in einen dieser Pfade kopieren.
- Pfad der Umgebungsvariable LD_LIBRARY_PATH
- /lib
- /usr/lib
- /etc/ld.so.conf
Beim Datenaustausch zwischen dem Unterprogrammen des Shared Object und dem rufenden Programm empfiehlt sich die Verwendung des Datentyps PChar.
Einbinden und verwenden der Shared Object-Funktion im eigenen Programm:
...
interface
...
{
Nennt die zuverwendende Funktion und das Shared Object in der die Funktion zu finden ist.
(In diesem Beispiel heisst das Shared Object libsotest.so und ist natürlich durch den Namen
Ihres Shared Objects zu ersetzen.)
(In diesem Beispiel heisst das Unterprogramm des Shared Object funStringZurueck und ist
natürlich durch den Namen des Unterprograms im Shared Objects zu ersetzen.)
}
function funStringZurueck(strUebergabe: PChar): PChar; stdcall; external 'libsotest.so';
...
function funWertZurueck: string;
begin
// Übernimmt den Rückgabewert des Unterprograms aus dem Shared Object
Result := funStringZurueck('hallo welt');
end;
...