![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при работе с dll!
Frozzen © (2005-11-20 18:51:00)Добрый вечер уважаемые!
Потребовалось использовать dll. Не получается работать. Уже создал длл как в примере, все-равно не работает, результат выдает не верный! Где ошибся подскажите?
library MyDll;
uses
SysUtils, Classes;
function MyFunc(aPar1 : Integer; aPar2 : Integer): Integer; stdcall;
begin
Result := aPar1 + aPar2;
end;
exports MyFunc;
begin
end.
Вызываю
var
LibH: THandle;
MyFunc : Function(aPar1 : Integer; aPar2 : Integer):Integer;
d:integer;
begin
@MyFunc := nil;
d := 0;
LibH := LoadLibrary('MyDll.dll');
if LibH >= 32 then begin
@MyFunc := GetProcAddress(LibH,'MyFunc');
if @MyFunc <> nil then
d := MyFunc(1,2)
else ShowMessage('!!!');
ShowMessage(IntToStr(d));
FreeLibrary(LibHandle);
Frozzen (2005-11-20 19:03:00) [1]Спасибо!
Как я это не заметил то...
begin...end (2005-11-20 18:54:00) [2]> Frozzen (20.11.05 18:51)
> Где ошибся подскажите?
В соглашении о вызове.
> MyFunc : Function(aPar1 : Integer; aPar2 : Integer):Integer;
Добавьте stdcall.
А если DLL не предполагается использовать в приложениях, написанных на других языках, то лучше убрать stdcall -- и там, и там.