Главная страница
    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.45 MB
Время: 0.038 c
1-1132156198
Asail
2005-11-16 18:49
2005.12.11
Вопрос по компоненте IAeverButton....


2-1132918799
kay
2005-11-25 14:39
2005.12.11
Есть non-unicode программа, как её запустить с правильным отображ


2-1132661817
Esenin
2005-11-22 15:16
2005.12.11
Помогите загрузить jpeg в TImage из TMemoryStream.


14-1132587990
oldman
2005-11-21 18:46
2005.12.11
Вот тебе и раз...


3-1130156030
napik
2005-10-24 16:13
2005.12.11
Asses





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский