danke dir.
Meinst du so?
Delphi-Quellcode:
function calcsum(a: double; b: double):integer ; stdcall; external 'qmc_dll_Project1.dll';
procedure calcmain( var loesung: Pansichar) ; stdcall; external 'qmc_dll_Project1.dll';
procedure calcmaindummy( var loesung: PANsiChar) ; stdcall; external 'qmc_dll_Project1.dll';
procedure TForm1.Button1Click(Sender: TObject);
var
loesung: PAnsiChar;
begin
ShowMessage(inttostr(calcsum(1,2)));
getmem(loesung,300);
calcmaindummy(loesung);
ShowMessage(String(loesung));
end;
und in
dll:
Code:
void __declspec(dllexport) __stdcall calcmaindummy(char* loesung){
strcpy(loesung,"TESTENDE:2ndLine"); //resultbuff;
}
oder muss ich in Delphi die Adresse übergeben?
calcmaindummy(@loesung);
Dann meckert er beim compiliern.
Habs jetzt dyn geladen und da komm tauch nur Schrott zurück:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
hmod : THandle;
GetReturn : procedure ( var loesung: PANsiChar) ; stdcall;
RetStr : PAnsichar;
begin
hmod := LoadLibrary('qmc_dll_Project1.dll');
if (hmod <> 0) then begin
GetReturn := GetProcAddress(hmod, 'calcmaindummy');
if (@GetReturn <> nil) then begin
GETMEM(RetStr,20);
GetReturn(RetStr);
ShowMessage('Drive Type is : ' + string(RetStr));
end
else
ShowMessage('GetProcAddress failed');
FreeLibrary(hmod);
end
else
ShowMessage('LoadLibrary Failed!');
end;
Ich galub das hat mit dem MEMMGR.LIB zu tun. MUss man da was machen oder wie?
DANKE
mfg
ws