[ FIH @ 27.08.2009. 08:04 ] @
Ovako, napravio sam dll u vs2008 i hocu da ga koristim u delphiju 2009.

Funkcije koje nemaju parametre iz dll rade OK. Problem mi je sa funkcijama koje imaju neke parametre pri pozivanju. Na primer:

c++ kod funkcije iz dll-a:
Code:

extern "C" __declspec(dllexport) int Test(int a){
    return a;
}


delphi kod:
Code:

function Test(a: Integer): Integer;
  stdcall; external 'Test.dll' name 'Test'; // Statichki load funkcije

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  i:= 34;
  ShowMessage(IntToStr(Test(i)));
end;


I ovo radi, pojavi se msgbox, ali chim ga zatvorim pojavi se greshka da ne moze da se pristupi toj i toj memoriskoj lokaciji. Sto ukazuje na problem sa oslobadjanjem memorije. Tako da sam probao i ovo:

Code:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  i:= 34;
  ShowMessage(IntToStr(Test(i)));

  while True do Application.ProcessMessages;
end;


Tako da se event Click nikada ne zavrshava, i tada se ne javlja greska.

U cemu gresim?

Unapred zahvalan,
Oliver
[ savkic @ 27.08.2009. 12:14 ] @
> I ovo radi, pojavi se msgbox, ali chim ga zatvorim pojavi se greshka da ne moze da se pristupi toj i toj memoriskoj lokaciji. Sto ukazuje
> na problem sa oslobadjanjem memorije. Tako da sam probao i ovo:

Pokušaj sa cdecl calling konvencijom. Ako ne pomogne onda imaš grešku u samom dllu ili negde u drugom delu programa.
[ FIH @ 27.08.2009. 13:40 ] @
Radi!

Hvala, pozdrav.