Cita:
Empezado por Neftali
Perdón.
Tienes TODA la razón.
Al trabajar con Delphi XE2 hay que cambiar referencias a algunas units.
Cambia Dialogs por VCL.Dialogs y prueba.
|
Ya me funcionó la compilación, ya lo tengo compilado y ya puedo llamar al .dll; El problema es que no funciona!!
Supongo que es por un error donde dice "var
Use: function(x,y:Integer):integer; stdcall;"
Ya que la función no es esa, la función que quiero utilizar es "StartHook" o algo que la ejecute.
¿Alguna otra idea?
Código:
program Call_suma_dinam;
uses
Sharemem,
SysUtils,
Classes,
Windows,
VCL.Dialogs;
{$R *.res}
var
H: Thandle;
res:integer;
Use: function(x,y:Integer):integer; stdcall;
begin
if (MessageBox(0, '¿Desea cargar la DLL?', '', MB_ICONQUESTION or MB_YESNO) = idNo) then begin
Exit;
end;
H := LoadLibrary('Project1.dll');
// Cargada correctamente?
if (H >= 32) then begin
MessageDlg('Cargada la DLL...', mtInformation, [mbOK], 0);
sum := nil;
@sum := GetProcAddress(H, 'StartHook');
// Asignada?
if Assigned(sum) then begin
MessageDlg('Acceso a la función StartHook', mtInformation, [mbOK], 0);
// llamada
res := Sum(Starthook);
MessageDlg(Format('Resultado: %d+%d=%d',[4,5,res]), mtInformation, [mbOK], 0);
FreeLibrary(H);
end;
end
else
MessageDlg('Error, no se ha encontrado SUMAR.DLL', mtError, [mbOk], 0)
end.
end.