Home » Tutorials » Object Pascal/RTL » DLLs

DLLs

Funktion hinzufügen

Die Funktion zum Addieren zweier Zahlen sieht folgendermaßen aus:

function addiere(zahl1, zahl2: integer): integer;
begin
  result := zahl1+zahl2;
end;

Wer hierbei jetzt große Überraschungen erlebt hat, sollte sich besser zuerst mit Pascal-Grundlagen befassen, bevor er hier weiterliest.
Nun muss diese Funktion nur noch in das DLL-Grundgerüst eingefügt werden. Zuvor ist aber noch anzumerken, dass es bei DLLs eine Besonderheit gibt: Wenn es möglich sein soll, dass Funktionen oder Prozeduren einer DLL auch von anderen Programmiersprachen genutzt werden können, muss das reservierte Wort stdcall hinter den Funktions- bzw. Prozedurkopf geschrieben werden. In unserm Fall also:

function addiere(zahl1, zahl2: integer): integer; stdcall;

Bei stdcall handelt es sich um eine sog. „Aufrufkonvention“. Weitere sind register, cdecl und safecall. Sie unterscheiden sich darin, wie Parameter übergeben werden und ob dabei CPU-Register verwendet werden. Für Aufrufe der Windows-API wird stdcall verwendet; register ist das effizienteste. Auf jeden Fall muss darauf geachtet werden, dass sowohl in der DLL auch beim Aufruf aus einer Anwendung die gleiche Aufrufkonvention verwendet wird.
Und ganz wichtig auch in dem Zusammenhang: Bei DLLs ist die Schreibweise der Namen von Funktionen und Prozeduren, die von außen aufrufbar sein sollen – im Gegensatz zum „normalen“ Pascal – von Bedeutung. Also auf Groß- und Kleinschreibung achten!

Ein Gedanke zu „DLLs“

  1. Hi,

    danke für das nette Tutorial.

    Aber windows alleine reicht bei mir im uses Abschnitt nicht aus. Ich muss noch SysUtils hinzufügen damit es läuft. Ohne SysUtils kommt diese Fehlermeldung: [DCC Fehler] Unit3.pas(17): E2003 Undefinierter Bezeichner: ‚ExtractFilePath‘

Kommentare sind geschlossen.