![]() |
DLLs einbinden
Ich habe bisher keinen Beitrag gefunden, der kurz Quelltexte zeigt, wie man eine DLL einbinden kann. Ich gehe hier nicht auf das Programmieren von DLLs ein oder was der Vortei der beiden genannten Methoden, sondern nur, wie das funktioniert.
0. Beispiel-Funktion Für die beiden folgenden Punkte gehen wir davon, aus dass eine DLL namens dptest.dll im gleichen Verzeichnis, wie die Anwendung liegt und folgende Funktion exportiert:
Delphi-Quellcode:
1. Direktes Einbinden
function Addieren(a, b: integer): integer;
Für das direkte Einbinden einer Funktion muss im interface-Abschnitt folgendes eingefügt werden:
Delphi-Quellcode:
1. Dynamisches Einbinden zur Laufzeit
const
DLLNAME = 'dptest'; // Unter Win9x funktioniert das, unter NT/XP/etc. MUSS AUF JEDENFALL die Endung mit angegeben werden! {...} function Addieren(a, b: integer): integer; external DLLNAME; stdcall; Empfohlen, wenn sich zum Beispiel der Dateiname der DLL ändern kann oder man sicher gehen will, dass die DLL wirklich vorhanden ist (nicht dass ein User die "versehentlich" gelöscht hat). ;)
Delphi-Quellcode:
Beide Methoden haben ihre Vor- und Nachteile.
type
TAddierenProc = function(a, b: integer): integer; stdcall; var hDLL: THandle; // Handle zur DLL iRes: integer; // Ergebnis der Funktion FarProc: TAddierenProc; sDLLPath: string; begin sDLLPath := ExtractFilePath(Application.ExeName) + 'dptest.dll'; hDLL := LoadLibrary(sDLLPath); if hDLL = 0 then begin ShowMessage('DLL konnte nicht geladen werden.'); Exit; end; try FarProc := GetProcAddress(hDLL, 'Addieren'); if Assigned(FarProc) then iRes := FarProc(1, 2); except ShowMessage('Funktion der DLL konnte nicht ausgeführt werden.'); end; end; Chris |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz