ALfrediKruger
26-12-2006, 11:34:11
Vale, un poblema:
Tengo una DLL de fabricacion propia q va bien, hace todo lo q tiene q hacer pero a la hora de cerrar la aplicacion q la utiliza me da un error (access violation) q me trae loco,
La dll se carga asi:
result := 0;
// if LibHand = 0 then
LibHand := LoadLibrary('myDLL.dll');
if LibHand <> 0 then
begin
@DisplayModalForm := GetProcAddress(LibHand, 'DisplayModalForm');
//cambio esto a funciones, devuelve un entero
result := integer(DisplayModalForm(Pchar(AstrFormulario),VarrIdiomas, AintIdioma));
//@DisplayModalForm (http://www.clubdelphi.com/foros/) := nil;
end;
// FreeLibrary(LibHand);
// LibHand := 0;
//ShowMessage('Liberado : ' + BoolToStr(blnIsFree));
Lo comentado son cosas q he probado... Lo unico q cambiaba el error era libhand := 0 q hacia q la direccion q daba error fuera la 0x00000
Libhand es una variable global de esa unidad y todo funciona ok... casca al cerrarse la aplicacion.... alguien ve algo feo? me voi a suicidar!!!!
Tengo una DLL de fabricacion propia q va bien, hace todo lo q tiene q hacer pero a la hora de cerrar la aplicacion q la utiliza me da un error (access violation) q me trae loco,
La dll se carga asi:
result := 0;
// if LibHand = 0 then
LibHand := LoadLibrary('myDLL.dll');
if LibHand <> 0 then
begin
@DisplayModalForm := GetProcAddress(LibHand, 'DisplayModalForm');
//cambio esto a funciones, devuelve un entero
result := integer(DisplayModalForm(Pchar(AstrFormulario),VarrIdiomas, AintIdioma));
//@DisplayModalForm (http://www.clubdelphi.com/foros/) := nil;
end;
// FreeLibrary(LibHand);
// LibHand := 0;
//ShowMessage('Liberado : ' + BoolToStr(blnIsFree));
Lo comentado son cosas q he probado... Lo unico q cambiaba el error era libhand := 0 q hacia q la direccion q daba error fuera la 0x00000
Libhand es una variable global de esa unidad y todo funciona ok... casca al cerrarse la aplicacion.... alguien ve algo feo? me voi a suicidar!!!!