Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Использование DLL

2.0K
07 апреля 2003 года
SteelBird
12 / / 04.01.2003
Hi ALL!
Можно ли реализовать следующее?
Из программы вызывается внешняя процедура, расположенная в DLL библиотеке.
Причем имя DLL файла известно только после запуска программы.
Индекс,имя и параметры процедуры известны.
Если DLL файл отстутствует, то процедура не вызывается.
323
09 апреля 2003 года
Sergun
228 / / 20.09.2000
Цитата:
Originally posted by SteelBird
Hi ALL!
Можно ли реализовать следующее?
Из программы вызывается внешняя процедура, расположенная в DLL библиотеке.
Причем имя DLL файла известно только после запуска программы.
Индекс,имя и параметры процедуры известны.
Если DLL файл отстутствует, то процедура не вызывается.


А что тут сложного? Используй динамическое подключение библиотеки... еще вопросы? :)
Если хош, могу оставить примерчик...:) 8)

2.0K
10 апреля 2003 года
SteelBird
12 / / 04.01.2003
Цитата:
Originally posted by Sergun

А что тут сложного? Используй динамическое подключение библиотеки... еще вопросы? :)
Если хош, могу оставить примерчик...:) 8)


Только одина вопрос: как правильно выгрузить DLL из памяти? Если пишу просто FreeLibrary('DllName.dll') то ПОСЛЕ закрытия приложения вылетаю с AccessViolation(как увидел в CPU View - на одном из вызовов TObject.Free)

323
10 апреля 2003 года
Sergun
228 / / 20.09.2000
Цитата:
Originally posted by SteelBird

Только одина вопрос: как правильно выгрузить DLL из памяти? Если пишу просто FreeLibrary('DllName.dll') то ПОСЛЕ закрытия приложения вылетаю с AccessViolation(как увидел в CPU View - на одном из вызовов TObject.Free)


Вот примерчик, кстать, из этого форума:

Создаеш DLL, в ней пишу:
extern "C" void __declspec(dllexport) Message(char *s) {
Application->MessageBox(s,"From DLL",IDOK);
}



Потом создаешь проект и подгружаешь динамически DLL:

void __fastcall TForm1::Button1Click(TObject *Sender) {
void (__stdcall *Message)(char *s);
HINSTANCE dllp = LoadLibrary("p.dll");
if (dllp) {
Message= (void(__stdcall *) (char*))
GetProcAddress(dllp, "_Message");
if (Message) Message("Hi From Dinamic DLL");
}
FreeLibrary(dllp);
}


Должно работать...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог