![]() |
Funktion aus der Dll aufrufen?
Das Problem liegt darin, dass dll in Fortran mit Hilfe von Fortran-Compiler geschrieben wurde. Delphi findet schon Funtion in dieser Dll, ich kann die sogar aufrufen, aber ich bekomme total falschen Wert. Hier ist ein Teil von meiner Quellcode:
Delphi-Quellcode:
Statt 6 bekomme ich so ein Ergebnis: -2334563. Und ich weiß jetzt nicht genau, wo liegt der Fehler: entweder in Dll oder ich mache in meiner Code was falsch? Danke. 8)
function VPUNK(t2:integer) : integer; external 'quelle.dll'; // rufe diese funktion VPUNK auf.
implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var cPfad, c1 : string; a,t2: integer; begin t2 := 3; a := VPUNK(t2); // verwende sie c1:= inttostr(a); |
Re: Funktion aus der Dll ausrufen?
Hi egal,
verwende doch bitte die [delphi]-Tags ;-) ...:cat:... |
Re: Funktion aus der Dll ausrufen?
Zitat:
|
Re: Funktion aus der Dll aufrufen?
Schreib mal den betreffenden Quellcodeteil komplett hin. Mit den Bruchstücken kann man nicht viel anfangen.
|
Re: Funktion aus der Dll aufrufen?
Vielleicht liegt es daran:
Delphi-Quellcode:
In der Regel werden DLL-Funktionen mit der Aufrufkonvention stdcall deklariert, sollte das auch nicht klappen kannst du es auch mal mit cdecl probieren.
function VPUNK(t2:integer) : integer; external 'quelle.dll'; stdcall;
|
Re: Funktion aus der Dll aufrufen?
Zitat:
Delphi-Quellcode:
Ist so besser?function VPUNK(t2:integer) : integer; external 'quelle.dll'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var cPfad, c1 : string; a,t2: integer; begin t2 := 3; a := VPUNK(t2); c1:= inttostr(a); |
Re: Funktion aus der Dll aufrufen?
Zitat:
Zitat:
|
Re: Funktion aus der Dll aufrufen?
Das mit den unterschiedlichen Deklarationen kommt vermutlich daher, dass du stdcall sowohl oben als auch unten bei der procedur anschreiben musst, also so:
Delphi-Quellcode:
Denk ich mal (ist zwar doof beschreiben, aber ich denke man sieht, was gemeint ist ;-) )
function VPUNK(t2:integer) : integer; external 'quelle.dll'; stdcall;
. . . function VPUNK(t2:integer) : integer; external 'quelle.dll'; stdcall; // rufe diese funktion VPUNK auf. t2: integer; t2 := 3; a := VPUNK(t2); // verwende sie. Hab mich verguckt, ist natürlich murks, was ich da geschrieben hab. Du musst sowohl im Code der DLL ein stdcall; ranhängen als auch in der Unit, in der du sie verwendest. |
Re: Funktion aus der Dll aufrufen?
Und jetzt noch die Funktion in der DLL und wie du sie exportiert hast. Dann kann man dir eventuell weiterhelfen.
|
Re: Funktion aus der Dll aufrufen?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 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