Asi se crea la DLL:
library dlEncrip; uses ShareMem, SysUtils, Classes; {$R *.res} //Desencripta la Clave function Desencriptar(cCadena: string): String; stdcall; var arClave: array[0..53] of Char; S, S1: string; nIndice, n, nLCadena: integer; begin //La Carga a la matriz **** codigo de la funcion **** Result := S; end; exports Desencriptar; begin end.
Así hago la llamada desde el programa:
function Desencriptar(cCadena: String): String; stdcall; external 'dlEncrip.dll';
Pero me lanza un
---------------------------
Debugger Exception Notification
---------------------------
Project dllprobando.exe raised exception class EAccessViolation with message 'Access violation at address 00392144 in module 'dlEncrip.dll'. Read of address 00120048'. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Justo en esta linea:
procedure TForm1.Button2Click(Sender: TObject); begin Edit2.Text := Desencriptar(Edit1.Text); end;
La DLL esta en la misma carpeta que el ejecutable, me estoy saltando algun paso?