Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.47 MB
Время: 0.024 c
8-1120820311
Madur
2005-07-08 14:58
2005.12.11
EXIF JPG прочесть


14-1132635587
Экспериментатор
2005-11-22 07:59
2005.12.11
Чем форматировать исходники, чтобы в божий вид привести


14-1132413148
syte_ser78
2005-11-19 18:12
2005.12.11
маленькая игрушка стрелялка


4-1129209791
NightLord
2005-10-13 17:23
2005.12.11
Блокировка Windows


14-1132011027
ronyn
2005-11-15 02:30
2005.12.11
Как установить драйвер?...