Wiki-KopieMirror

Dies ist ein Mirror des Wikis von pascal.chat. Bearbeiten, Verlauf und Anmeldung finden dort statt.

shared object static load/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.

pascal
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.

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:

pascal
  
  ...
  
  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;

  ...

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.

Version 1, zuletzt geändert von WikiArchive .