Difference between revisions of "shared library/de"

From Free Pascal wiki
Jump to navigationJump to search
m
m (Fixed syntax highlighting; deleted category included in page template)
 
Line 1: Line 1:
 
{{shared library}}
 
{{shared library}}
<br>
+
 
Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].<br>
+
 
<br>
+
Zurück zu den [[Additional information/de|Zusätzlichen Informationen]].
 +
 
 +
 
 
__TOC__
 
__TOC__
<br>
+
 
 +
 
 
=Erstellen einer einfachen Windows-DLL=
 
=Erstellen einer einfachen Windows-DLL=
Für dieses Tutorial wurde Lazarus 1.0.4 mit FPC 2.6.0 verwendet.<br>
+
 
<br>
+
Für dieses Tutorial wurde Lazarus 1.0.4 mit FPC 2.6.0 verwendet.
<br>
+
 
 
=Für welche Windowsversion wird die Dll erstellt?=
 
=Für welche Windowsversion wird die Dll erstellt?=
Das Beispiel zeigt das erstellen einer einfachen DLL für Windows 32 Bit und Windows 64 Bit.<br>
+
 
Diese einfache Windows-Dll dient an anderer Stelle als Beispiel wie Dll's in Windows statisch und dynamisch eingebunden werden.<br>
+
Das Beispiel zeigt das erstellen einer einfachen DLL für Windows 32 Bit und Windows 64 Bit.
<br>
+
 
<br>
+
Diese einfache Windows-Dll dient an anderer Stelle als Beispiel wie Dll's in Windows statisch und dynamisch eingebunden werden.
 +
 
 
=Ein Projekt erstellen=
 
=Ein Projekt erstellen=
 +
 
* Starten Sie Lazarus.
 
* Starten Sie Lazarus.
 
* Klicken Sie im Menü auf "Projekt" -> "Neues Projekt ...".
 
* Klicken Sie im Menü auf "Projekt" -> "Neues Projekt ...".
Es öffnet sich ein Fenster (Dialog) mit dem Titel "Erzeuge neues Projekt".<br>
+
 
 +
Es öffnet sich ein Fenster (Dialog) mit dem Titel "Erzeuge neues Projekt".
 +
 
 
* Klicken Sie in dem Fenster (Dialog) auf den Punkt "Bibliothek".
 
* Klicken Sie in dem Fenster (Dialog) auf den Punkt "Bibliothek".
 
* Klicken Sie in dem Fenster (Dialog) auf den Button "OK".
 
* Klicken Sie in dem Fenster (Dialog) auf den Button "OK".
Lazarus erstellt ein neues Projekt.<br>
+
 
 +
Lazarus erstellt ein neues Projekt.
 +
 
 
* Speichern Sie dieses Projekt
 
* Speichern Sie dieses Projekt
 
* Klicken Sie im Menü auf "Datei" -> "Alles speichern"
 
* Klicken Sie im Menü auf "Datei" -> "Alles speichern"
Es erscheint das Fenster (Dialog) zum speichern des Projektes.<br>
+
 
 +
Es erscheint das Fenster (Dialog) zum speichern des Projektes.
 +
 
 
* Steuern (navigieren) Sie mit dem Fenster (Dialog) zu der Stelle, an der das Projekt gespeichert werden soll.
 
* Steuern (navigieren) Sie mit dem Fenster (Dialog) zu der Stelle, an der das Projekt gespeichert werden soll.
 
* Klicken Sie in dem Fenster (Dialog) auf den Button "Speichern".
 
* Klicken Sie in dem Fenster (Dialog) auf den Button "Speichern".
<br>
+
 
Ihre lpr-Datei sollte in etwa so aussehen:<br>
+
Ihre lpr-Datei sollte in etwa so aussehen:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
library TestDll;  // Hier steht der Name, unter dem Sie Ihr Projekt gespeichert haben
 
library TestDll;  // Hier steht der Name, unter dem Sie Ihr Projekt gespeichert haben
 
                   // In diesem Beispiel heisst die DLL TestDll
 
                   // In diesem Beispiel heisst die DLL TestDll
Line 40: Line 52:
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
 
<br>
 
 
=Eine eigene Funktion in das Projekt einfügen=
 
=Eine eigene Funktion in das Projekt einfügen=
Das obige Beispiel macht ohne eine Funktion noch keinen Sinn.<br>
+
 
Das Projekt TestDll bekommt eine eigene Funktion, der von einem externen Programm ein Wert übergeben wird und die einen Wert zurück gibt.<br>
+
Das obige Beispiel macht ohne eine Funktion noch keinen Sinn.
<br>
+
 
Für die Übergabeparameter wurden der Datentyp PChar und die Aufrufkonvention stdcall gewählt.<br>
+
Das Projekt TestDll bekommt eine eigene Funktion, der von einem externen Programm ein Wert übergeben wird und die einen Wert zurück gibt.
Der Grund dafür ist einfach. Beide der Datentyp PChar als Übergabeparameter und die Aufrufkonvention stdcall sind Windowsstandard.<br>
+
 
<br>
+
Für die Übergabeparameter wurden der Datentyp PChar und die Aufrufkonvention stdcall gewählt.
Im Beispiel wird der Funktion funTestFunktion ein Wert übergeben, der sofort wieder zurückgegeben wird.<br>
+
 
<syntaxhighlight>
+
Der Grund dafür ist einfach. Beide der Datentyp PChar als Übergabeparameter und die Aufrufkonvention stdcall sind Windowsstandard.
 +
 
 +
Im Beispiel wird der Funktion funTestFunktion ein Wert übergeben, der sofort wieder zurückgegeben wird.
 +
 
 +
<syntaxhighlight lang=pascal>
 
library TestDll;
 
library TestDll;
  
Line 65: Line 80:
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
 
<br>
 
 
=Die eigene Funktion exportieren=
 
=Die eigene Funktion exportieren=
Damit die eigene Funktion von anderen Programmen verwendet werden kann, muss sie exportiert werden.<br>
+
 
Diese Aufgabe erledigt der Abschnitt exports.<br>
+
Damit die eigene Funktion von anderen Programmen verwendet werden kann, muss sie exportiert werden.
Der Abschnitt exports steht am Ende der Projektdatei (lpr-Datei).<br>
+
 
Im Abschnitt exports stehen alle Unterprogramme (Prozeduren und Funktionen) die exportiert werden sollen.<br>
+
Diese Aufgabe erledigt der Abschnitt exports.
Im alle Unterprogramme (Prozeduren und Funktionen) die exportiert werden sollen werden durch ein Komma getrennt.<br>
+
 
Der Abschnitt exports wird durch ein Semikolon (;) abgeschlossen.<br>
+
Der Abschnitt exports steht am Ende der Projektdatei (lpr-Datei).
<br>
+
 
 +
Im Abschnitt exports stehen alle Unterprogramme (Prozeduren und Funktionen) die exportiert werden sollen.
 +
 
 +
Im alle Unterprogramme (Prozeduren und Funktionen) die exportiert werden sollen werden durch ein Komma getrennt.
 +
 
 +
Der Abschnitt exports wird durch ein Semikolon (;) abgeschlossen.
 +
 
 
So sieht eine einfache und funktionsfähige Dll aus:
 
So sieht eine einfache und funktionsfähige Dll aus:
<syntaxhighlight>
+
 
 +
<syntaxhighlight lang=pascal>
 
library TestDll;
 
library TestDll;
  
Line 93: Line 114:
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
<br>
+
 
Als letzter Schritt muss das Programm noch compiliert werden und fertig ist die erste Dll.<br>
+
Als letzter Schritt muss das Programm noch compiliert werden und fertig ist die erste Dll.
<br>
 
<br>
 
--[[User:Olaf|Olaf]] 14:02, 13 March 2013 (UTC)
 
[[Category:Tutorials/de]]{{AutoCategory}}
 

Latest revision as of 12:33, 26 February 2020

Deutsch (de) English (en) español (es) 한국어 (ko) русский (ru)


Zurück zu den Zusätzlichen Informationen.



Erstellen einer einfachen Windows-DLL

Für dieses Tutorial wurde Lazarus 1.0.4 mit FPC 2.6.0 verwendet.

Für welche Windowsversion wird die Dll erstellt?

Das Beispiel zeigt das erstellen einer einfachen DLL für Windows 32 Bit und Windows 64 Bit.

Diese einfache Windows-Dll dient an anderer Stelle als Beispiel wie Dll's in Windows statisch und dynamisch eingebunden werden.

Ein Projekt erstellen

  • Starten Sie Lazarus.
  • Klicken Sie im Menü auf "Projekt" -> "Neues Projekt ...".

Es öffnet sich ein Fenster (Dialog) mit dem Titel "Erzeuge neues Projekt".

  • Klicken Sie in dem Fenster (Dialog) auf den Punkt "Bibliothek".
  • Klicken Sie in dem Fenster (Dialog) auf den Button "OK".

Lazarus erstellt ein neues Projekt.

  • Speichern Sie dieses Projekt
  • Klicken Sie im Menü auf "Datei" -> "Alles speichern"

Es erscheint das Fenster (Dialog) zum speichern des Projektes.

  • Steuern (navigieren) Sie mit dem Fenster (Dialog) zu der Stelle, an der das Projekt gespeichert werden soll.
  • Klicken Sie in dem Fenster (Dialog) auf den Button "Speichern".

Ihre lpr-Datei sollte in etwa so aussehen:

library TestDll;  // Hier steht der Name, unter dem Sie Ihr Projekt gespeichert haben
                  // In diesem Beispiel heisst die DLL TestDll

{$mode objfpc}{$H+}

uses
  Classes;

begin
end.

Eine eigene Funktion in das Projekt einfügen

Das obige Beispiel macht ohne eine Funktion noch keinen Sinn.

Das Projekt TestDll bekommt eine eigene Funktion, der von einem externen Programm ein Wert übergeben wird und die einen Wert zurück gibt.

Für die Übergabeparameter wurden der Datentyp PChar und die Aufrufkonvention stdcall gewählt.

Der Grund dafür ist einfach. Beide der Datentyp PChar als Übergabeparameter und die Aufrufkonvention stdcall sind Windowsstandard.

Im Beispiel wird der Funktion funTestFunktion ein Wert übergeben, der sofort wieder zurückgegeben wird.

library TestDll;

{$mode objfpc}{$H+}

// Da in diesem Beispiel keine Units eingebunden werden, wurde auf den Abschnitt uses verzichtet.

  function funTestFunktion(chrZeichenkette: PChar): PChar; stdcall;
  begin
    Result := chrZeichenkette;
  end;

begin // Der Abschnitt begin wird weiter unten durch den Abschnitt exports ersetzt.
end.

Die eigene Funktion exportieren

Damit die eigene Funktion von anderen Programmen verwendet werden kann, muss sie exportiert werden.

Diese Aufgabe erledigt der Abschnitt exports.

Der Abschnitt exports steht am Ende der Projektdatei (lpr-Datei).

Im Abschnitt exports stehen alle Unterprogramme (Prozeduren und Funktionen) die exportiert werden sollen.

Im alle Unterprogramme (Prozeduren und Funktionen) die exportiert werden sollen werden durch ein Komma getrennt.

Der Abschnitt exports wird durch ein Semikolon (;) abgeschlossen.

So sieht eine einfache und funktionsfähige Dll aus:

library TestDll;

{$mode objfpc}{$H+}

// Da in diesem Beispiel keine Units eingebunden werden, wurde auf den Abschnitt uses verzichtet.

  function funTestFunktion(chrZeichenkette: PChar): PChar; stdcall;
  begin
    Result := chrZeichenkette;
  end;

exports            // Der Abschnitt exports ersetzt den Abschnitt begin.
  funTestFunktion; // Hier stehen die Namen der Unterprogramme, die die Dll exportiert.
                   // In unserem Beispiel wird nur ein Unterprogramm exportiert.
end.

Als letzter Schritt muss das Programm noch compiliert werden und fertig ist die erste Dll.