Sign in Join
Wiki copytemporary

shared object static load/de: what changed

Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.

Title: shared object static load/de

OldNewLine
1+Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].
2+
3+Dieser Artikel beschäftigt sich mit der Linux(Ubuntu)-Programmierung.
4+
5+Das Tutorial, zeigt wie eine Programmbibliothek mit der Dateinamenserweiterung .so (Shared Object) statisch geladen wird.
6+
7+``` pascal
8+library sotest;
9+
10+{$mode objfpc}{$H+}
11+
12+uses
13+ SysUtils;
14+
15+// Das Unterprogramm im Shared Object
16+function funStringZurueck(strUebergabe: PChar): PChar;
17+begin
18+ funStringZurueck := PChar(UpperCase(strUebergabe));
19+end;
20+
21+// Exportiertes Unterprogramm(e)
22+exports
23+ funStringZurueck;
24+
25+begin
26+end.
27+```
28+
29+Damit das Shared Objekt vom Betriebssystem (Linux) gefunden werden kann, muss es in einem der folgenden Pfade zu finden sein.
30+
31+Ist das Shared Object in keinem dieser Pfade zu finden, dann müssen Sie das Shared Objekt in einen dieser Pfade kopieren.
32+
33+- Pfad der Umgebungsvariable LD_LIBRARY_PATH
34+- /lib
35+- /usr/lib
36+- /etc/ld.so.conf
37+
38+Beim Datenaustausch zwischen dem Unterprogrammen des Shared Object und dem rufenden Programm empfiehlt sich die Verwendung des Datentyps PChar.
39+
40+Einbinden und verwenden der Shared Object-Funktion im eigenen Programm:
41+
42+``` pascal
43+
44+ ...
45+
46+ interface
47+
48+ ...
49+
50+ {
51+ Nennt die zuverwendende Funktion und das Shared Object in der die Funktion zu finden ist.
52+ (In diesem Beispiel heisst das Shared Object libsotest.so und ist natürlich durch den Namen
53+ Ihres Shared Objects zu ersetzen.)
54+ (In diesem Beispiel heisst das Unterprogramm des Shared Object funStringZurueck und ist
55+ natürlich durch den Namen des Unterprograms im Shared Objects zu ersetzen.)
56+ }
57+ function funStringZurueck(strUebergabe: PChar): PChar; stdcall; external 'libsotest.so';
58+
59+ ...
60+
61+function funWertZurueck: string;
62+begin
63+ // Übernimmt den Rückgabewert des Unterprograms aus dem Shared Object
64+ Result := funStringZurueck('hallo welt');
65+end;
66+
67+ ...
68+```
69+
70+---
71+*From the Free Pascal wiki, page "shared object static load/de", as it stood on 2020-02-26 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history