Hi,
Das Problem was ich habe ist:
Es funktioniert alles tadellos, bis auf die Parameterübergabe an die Callback-Funktion.
Egal was ich auch anstelle ich bekomme immer 4518732 zurück.
Ich habe, aus diesem Grunde schon in calcresults eine feste int eingegeben.
habe folgenden Code geschrieben:
callb.h
Code:
#ifndef CALLB_H
#define CALLB_H
#include "callb_global.h"
#endif // CALLB_H
typedef bool (CALLBACK(CallbackFunc)(int));
extern "C" void calcresults(CallbackFunc* Callback, DWORD UserData);
callb.cpp
Code:
#include <windows.h>
#include "callb.h"
BOOL APIENTRY DllMain(HINSTANCE hInst, DWORD Reason, LPVOID Reserved)
{
if(Reason==DLL_PROCESS_ATTACH)
{
return TRUE;
}
if(Reason==DLL_PROCESS_DETACH)
{
return TRUE;
}
return FALSE;
}
extern "C" __declspec( dllexport ) void calcresults(CallbackFunc* Callback, DWORD UserData)
{
int z=15;
Callback(z);
}
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
function calcresults(s:pointer;a:dword):boolean;
cdecl ;
//cdecl
var
Form1: TForm1;
implementation
{$R *.dfm}
function calcresults(s:pointer;a:dword):boolean;
cdecl ;
external '
callb.dll';
//cdecl
function Zielfunktion(j:integer):boolean;
begin
form1.label1.caption:=inttostr(j);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
calcresults(@Zielfunktion,5);
end;
end.
Vielen dank im Vorraus
Rainer