Текущий архив: 2005.12.11;
Скачать: CL | DM;
ВнизOverload в DLL Найти похожие ветки
← →
Некто Аполло (2005-11-10 11:50) [0]Здраствуйте многоуважаемые.
У меня проблема с перегрузкой функций в DLL. Вот код:
Библиотека
library XXX;
uses
SysUtils, Dialogs,
Classes;
{$R *.res}
procedure XXX(FileName: PChar); overload;
begin
ShowMessage("XXX 1");
end;
procedure XXX(FileName: PChar; StrBreak: PChar); overload;
begin
ShowMessage("XXX 2");
end;
procedure XXX(FileName: PChar; StrCountBreak: integer); overload;
begin
ShowMessage("XXX 3");
end;
exports
XXX (FileName: PChar),
XXX (FileName: PChar; StrBreak: PChar),
XXX (FileName: PChar; StrCountBreak: integer);
begin
end.
--------------------------------------------------------
В самой программе
unit unDLL;
interface
procedure XXX(FileName: PChar); overload;
procedure XXX(FileName: PChar; StrBreak: PChar); overload;
procedure XXX(FileName: PChar; StrCountBreak: integer); overload;
implementation
procedure XXX(FileName: PChar); overload; external "XXX.dll";
procedure XXX(FileName: PChar; StrBreak: PChar); overload; external "XXX.dll";
procedure XXX(FileName: PChar; StrCountBreak: integer); overload; external "XXX.dll";
end.
При компиляции никаких ошибок не выдает.
При вызове в программе процедуры XXX с любым набором параметров, появляется сообщение "XXX 1".
Если в разделе exports первой поставить строкуXXX (FileName: PChar; StrBreak: PChar)
то независимо от параметров будет появляться сообщение "XXX 2".
Что сделать, что бы все работало нормально?
(Хотелось бы чтобы процедуры имели одно имя)
← →
Lamer@fools.ua © (2005-11-10 11:58) [1]>>Некто Аполло (10.11.05 11:50)
>Что сделать, что бы все работало нормально?
Почитать стандартную справку. Там написано, что в этом случае нужно экспортировать функции под разными именами.
← →
TUser © (2005-11-10 12:02) [2]В какой версии Delphi нормально компилируется такой код
library XXX;
...
procedure XXX
??
> Что сделать, что бы все работало нормально?
Надо при экспорте написать
export
XXX () name "xxx1";
XXX (...) name "xxx2"
и т.д.
В основной программе
procedure XXX(FileName: PChar); overload; external "Project2.dll" name "XXX1";
и т.д.
и вызывать как ты хочешь
procedure TForm1.Button1Click(Sender: TObject);
begin
XXX("aa");
xxx ("aa","bb");
xxx ("aa",10);
end;
← →
Некто Аполло (2005-11-10 12:18) [3]-->TUser
Спасибо огромное. Проname
при экспорте знал, а проexternal ... name "xxx1"...
не знал. В справке, только сейчас нашел.
Еще раз спасибо
Страницы: 1 вся ветка
Текущий архив: 2005.12.11;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.038 c