Hallo Leute,
also ich hab die
DLL dyn. gelanden und die SUMME von 1+2+3 klappt auch mit Rückgabewert int.
Doch wenn ich char* zurückgeben will kommt nur nix.
Kann mir da wer sagen, wieso? Ich dachte bei dyn. laden der
dll braucht man auf den MemMGR nicht achten?
DANKE für jeden TIPP.
Habe nun das folgende probiert:
Delphi-Quellcode:
procedure TForm2.LadeDLL(Sender: TObject);
begin
hmod := LoadLibrary('QMC_DLL.dll');
if (hmod <> 0) then begin
calcmain := GetProcAddress(hmod, 'calcmain');
if (@calcmain <> nil) then begin
ShowMessage('calmain geladen');
end
else
ShowMessage('GetProcAddress failed');
getttterms := GetProcAddress(hmod, 'getttterms');
if (@calcmain <> nil) then begin
ShowMessage('getttterms geladen');
end
else
ShowMessage('GetProcAddress failed');
calcsum := GetProcAddress(hmod, 'calcsum');
if (@calcsum <> nil) then begin
ShowMessage(Format('Calcsum geladen: UND TEST: SUM(1,2,3) = %d',[calcsum(1,2,3)]));
end
else
ShowMessage('GetProcAddress failed');
dummycdecl := GetProcAddress(hmod, 'dummycdecl');
if (@dummycdecl <> nil) then begin
ShowMessage(Format('dummycdecl geladen: UND Return; = %c',[dummycdecl('3')]));
end
else
ShowMessage('GetProcAddress failed');
dummystdcall := GetProcAddress(hmod, 'dummystdcall');
if (@dummystdcall <> nil) then begin
ShowMessage(Format('dummystdcall geladen: UND Return; = %c',[dummystdcall('3')]));
end
else
ShowMessage('GetProcAddress failed');
end
else
ShowMessage('LoadLibrary Failed!');
end;
die ersten beiden werden geladen bzw die Summe angezeigt. aber die letzten beiden klappen nicht
mehr - da kommt GetProcAddress failed'.
Mein
DLL:
Code:
char __declspec(dllexport) __stdcall dummystdcalll(char* inpvec)
{
return inpvec[0]; //resultbuff;
}
char __declspec(dllexport) __cdecl dummycdecl(char* inpvec)
{
return inpvec[0]; //resultbuff;
}
Wer weiß Rat?
DANKE