14/04/09 19:28
lorenzo
Ho una dll c con queste funzioni
il codice delphi che la richiama è questo:
in questo modo mi viene un errore di violazione di accesso.
Ho provato ad inserire una MessageBox nella dll per vedere se i paramtri passati arrivavano giusti e non succede, neanche quelli ritornati.
Come posso fare?
edit: il problema di violazione di accesso probabilmente deriva dal fatto che lavorando su una stringa inaspettata la fuzione crasha. Secondo me risolvendo il passaggio dei parametri si risolve anche il problema dell'accesso.
extern "C"{ __declspec(dllexport)double GetValue(char *funzione, double incognita); }
il codice delphi che la richiama è questo:
procedure TfrmMain.TracciaAssi(); var str: String; addr: Pointer; res: Double; val: Double; proc: function(funzione: Pointer; incognita: Double): Double cdecl {$IFDEF WIN32} stdcall {$ENDIF}; DLLHandle: THandle; begin With desktop do begin Canvas.MoveTo(0, round(frmMain.Height/ 2) - 25); Canvas.LineTo(frmMain.Width, round(frmMain.Height/ 2) - 25); Canvas.MoveTo(round(frmMain.Width/ 2), 0); Canvas.LineTo(round(frmMain.Width/ 2), frmMain.Height); str:= 'sinx'; val:= 1; res:=0; addr:= @str; DLLHandle:= LoadLibrary('RpNotation.dll'); if DLLHandle <> 0 then begin @proc:= GetProcAddress(DLLHandle, 'GetValue'); if Assigned(proc) then begin res:= proc(addr,val); end else MessageBox(0,'Errore','Errore',0); end; end; end;
in questo modo mi viene un errore di violazione di accesso.
Ho provato ad inserire una MessageBox nella dll per vedere se i paramtri passati arrivavano giusti e non succede, neanche quelli ritornati.
Come posso fare?
edit: il problema di violazione di accesso probabilmente deriva dal fatto che lavorando su una stringa inaspettata la fuzione crasha. Secondo me risolvendo il passaggio dei parametri si risolve anche il problema dell'accesso.
Ultima modifica effettuata da lorenzo 14/04/09 19:30
aaa