Einzelnen Beitrag anzeigen

Benedikt Magnus

Registriert seit: 6. Jul 2012
Ort: Bonn
190 Beiträge
 
FreePascal / Lazarus
 
#1

Schlüsselwort "exports" wird in Unit ignoriert

  Alt 4. Sep 2019, 20:59
Hallo,

ich habe folgende zwei Dateien:

ExportTest.pas:
Delphi-Quellcode:
library ExportTest;

{$mode objfpc}
{$H+}

uses
  ExportUnit;

procedure MainTest();
begin
  WriteLn('MainTest');
end;

exports
  MainTest;

end.
ExportUnit.pas:
Delphi-Quellcode:
unit ExportUnit;

{$mode objfpc}
{$H+}

interface

implementation

procedure UnitTest();
begin
  WriteLn('UnitTest');
end;

exports
    UnitTest;

end.
Compiler ist Free Pascal, Betriebssystem Ubuntu 18.04.

Wenn ich diese Bibliothek nun kompiliere, ist die Prozedur MainTest erfolgreich exportiert worden und kann von einem Programm heraus aufgerufen werden. Ein Aufruf der Prozedur UnitTest scheitert hingegen. Wenn ich mit
Code:
nm -D libUnitTest.so
nachsehe, findet das tatsächlich auch nur MainTest als einzige exportierte Prozedur.
Entferne ich den Abschnitt exports aus der ExportTest.pas, so wird gar keine Prozedur mehr gefunden.
Die einzige Möglichkeit, die Prozedur UnitTest erfolgreich zu exportieren, ist sie in interface zu verweisen und unter exports in der ExportTest.pas mit aufzulisten, was aber natürlich ziemlich unschön ist.

Weiß jemand, ob ich etwas falsch mache? Oder ist diese Funktion einfach nicht im FPC (für Linux?) implementiert und der Exportabschnitt wird stillschweigend ignoriert?
  Mit Zitat antworten Zitat