DLL in Delphi: Problem

Hallo,
wenn ich eine DLL in Delphi schreibe, kommt immer der Fehler: „Einsprung nicht gefunden“ (oder so ähnlich). In der DLL schreibe ich eine Funktion. Könnt ihr mir vielleicht eine Beispiel-DLL-Funktion geben (die z.B.: eine Message anzeigt)? Ich möchte diese DLL in VB verwenden.

Danke

Michael

Hallo!

hier ein Beispiel:

Library Test;

Uses
; // wenn du keine Unit einbinden willst,
// binde eine Leere Unit ein.

Function Calc(i: integer): integer;
begin
end;

exports
calc index 1;
// oder Calc name IntCalc;

Begin
End.

Im Programm zum einbinden:

Function Calc(int: integer): integer; external ‚Test.dll‘ index 1;

Dann kannst du die Function ganz normal benutzen.

MFG, Volker

Hallo,

hier eine einfache DLL.

library Project2;

function AddLong(a, b: LongInt): LongInt; stdcall;
begin
result := a + b;
end;

function SubLong(a, b: LongInt): LongInt; stdcall;
begin
result := a - b;
end;

exports
SubLong,
AddLong;

begin
end.

Die USES-Anweisung ist unnoetig wenn du keine weiteren Units einbinden willst. Der Index ist unnoetig, wenn du ueber den Namen auf die Funktionen zugreifst (was sinnvoll ist)

Du hast wahrscheinlich die exports-Anweisung vergessen.
Wenn du die DLL in VB verwenden willst, ist die Anweisung „stdcall“ unbedingt erforderlich, sonst bekommst du bei Funktionen, die Parameter uebergeben eine Schutzverletzung.

in Delphi bindest Du die Funktionen dann im Programm so ein:

function AddLong(a,b:LongInt): LongInt; stdcall; external ‚Project2.dll‘ ;
function SubLong(a,b:LongInt): LongInt; stdcall; external ‚Project2.dll‘ ;

in VB so:
function AddLong lib „Project2.dll“ (a,b As Long) As Long
function SubLong lib „Project2.dll“ (a,b As Long) As Long

Gruss, Niels

Hoppla, kleiner Fehler
Hallo,

in VB so:
function AddLong lib „Project2.dll“ (a,b As Long) As Long
function SubLong lib „Project2.dll“ (a,b As Long) As Long

das ist falsch! Es muesste heissen:

function AddLong lib „Project2.dll“ (byval a, byval b As Long) As Long
function SubLong lib „Project2.dll“ (byval a, byval b As Long) As Long

Gruss, Niels