shared object static load/de

From Free Pascal wiki
Revision as of 09:07, 6 June 2013 by Olaf (talk | contribs) (Created page with "{{so static load}} <br> <br> Dieser Artikel beschäftigt sich mit der Linux(Ubuntu)-Programmierung.<br> Das Tutorial, zeigt wie eine Programmbibliothek mit der Dateinamenserwe...")
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Template:so static load

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;


// Die Funktion der DLL
function funStringZurueck(strUebergabe: PChar): PChar;
begin
  funStringZurueck := PChar(UpperCase(strUebergabe));
end;


// Exportierte Funktion(en)
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.)
  }
  function funStringZurueck(strUebergabe: PChar): PChar; stdcall; external 'libsotest.so';
  
  ...
  
function funWertZurueck: string;
begin
  // Übernimmt den Rückgabewert der DLL-Funktion
  Result := funStringZurueck('hallo welt');
end;

  ...



--Olaf 07:07, 6 June 2013 (UTC)