Autor Beitrag
Mike19
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: Fr 01.08.08 15:37 
Hallo,

ich beschäftige mich gerade mit Dll's in Dephi. Habe das Tutorial von Martin Strohal durchgearbeitet. Das statische Einbinden klappt auch.

Beim dynamischen Einbinden mit

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
unit unit1;

interface
uses windows;

type
 TFunktion = function(zahl1, zahl2:real):real;
 function addieren(zahl1, zahl2:real):real;

implementation

function addieren(zahl1, zahl2:real):real;
var
 Funktion: TFunktion;
 Handle: THandle;
 begin
    Handle:=LoadLibrary(PChar('rechnen.dll'));
    if Handle <> 0 then
    begin
     @Funktion:=GetProcAddress(Handle, 'addiere');
     if @Funktion <> nil then
    begin
     result:=addiere(zahl1, zahl2);
    end;
    FreeLibrary(Handle);
   end;
 end;

end.


kommt immer die Fehlermeldung "[Pascal Fehler] add.pas(23): E2003 Undefinierter Bezeichner: 'addiere' ".

Woran kann das liegen.

Die Dll liegt im gleichen Pfad wie die unit. Wenn ich in der Zeile "result:= addiere..." eine andere Anweisung eingebe, wird diese auch abgearbeitet.

vielen Dank im varaus.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 01.08.08 15:42 
Aus
ausblenden Delphi-Quelltext
1:
result:=addiere(zahl1, zahl2);					

mach mal
ausblenden Delphi-Quelltext
1:
result:=Funktion(zahl1, zahl2);					


Überleg mal, woher der Compiler wissen soll dass deine Funktion addiere die Funktion aus der DLL ist, die haben bei dir doch keinerlei Verbindung.
Mike19 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 256

Win XP, Vista, Win 7
Delphi 2005, Turbo Delphi
BeitragVerfasst: Fr 01.08.08 15:44 
Danke,

liegt wahrscheinlich an der Wärme :oops: