Форум: "Основная";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
Вниздинамической загрузке DLL Найти похожие ветки
← →
Jul (2002-10-22 11:44) [0]Добрый день.
Могли бы вы поконсультировать профана в вопросе динамической загрузке DLL.
Я приведу код, в статическом варианте все работает, при динамической загрузке функция из DLL - GetSimpleText возвращает неправильное значение, не реагируя на входной параметр. При выгрузке появляется exception - Access violation.
Спасибо.
GetSimpleText: function(LangRus: Boolean): PChar;
LibHandle: THandle;
implementation
{$R *.DFM}
//function GetSimpleText(LangRus: Boolean): PChar; stdcall; external "fileutl.dll";
//function GetSimpleText(LangRus: PChar): PChar; stdcall; external "fileutl.dll";
procedure TForm1.Button1Click(Sender: TObject);
begin
@GetSimpleText := nil;
LibHandle := LoadLibrary("fileutl.dll");
if LibHandle <> 0 then begin
@GetSimpleText := GetProcAddress(LibHandle,"GetSimpleText");
if @GetSimpleText <> nil then
ShowMessage(StrPas(GetSimpleText(True)));
end;
FreeLibrary(LibHandle);
// ShowMessage(StrPas(GetSimpleText(True)));
// ShowMessage(StrPas(GetSimpleText(False)));
end;
← →
Skier (2002-10-22 11:48) [1]>Jul
type
TGetSimpleText = function(LangRus: Boolean): PChar;stdcall;
var
LibHandle: THandle;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
GetSimpleText : TGetSimpleText;
begin
@GetSimpleText := nil;
LibHandle := LoadLibrary("fileutl.dll");
if LibHandle <> 0 then begin
@GetSimpleText := GetProcAddress(LibHandle,"GetSimpleText");
if @GetSimpleText <> nil then
ShowMessage(StrPas(GetSimpleText(True)));
end;
FreeLibrary(LibHandle);
end;
И замени Boolean на Integer для
надёжности...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.31;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.009 c