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

Ваш аккаунт

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

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

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

Функция из ДЛЛ

12K
01 марта 2006 года
CPit
12 / / 01.03.2006
Пользую в приложении функцию из стандартной ДЛЛ, компилит нормальнго, а вот на линковке выдаёт следующую ошибку:
Unresolved external 'Имя функции' referenced from UNIT1.OBJ

В делфях при работе похожаю штука была пока не сделали следующее объявление:
stdcall; external 'имя библиотеки.dll' name 'имя функции';
и тогда всё заработало...

Не подскажите, что в Билдере такое нужно сделать, объявить, чтоб всё нормально запустилось???
436
01 марта 2006 года
Fevzi
87 / / 02.04.2005
Цитата:
Originally posted by CPit
Пользую в приложении функцию из стандартной ДЛЛ, компилит нормальнго, а вот на линковке выдаёт следующую ошибку:
Unresolved external 'Имя функции' referenced from UNIT1.OBJ

В делфях при работе похожаю штука была пока не сделали следующее объявление:
stdcall; external 'имя библиотеки.dll' name 'имя функции';
и тогда всё заработало...

Не подскажите, что в Билдере такое нужно сделать, объявить, чтоб всё нормально запустилось???



Видимо линкер не знает где описание этой фун-ии.
нужно подключить соответствующий lib файл к проекту или вызывать фун-ию динамически из dll

2.1K
01 марта 2006 года
wAngel
129 / / 23.11.2004
Цитата:
Originally posted by CPit
Пользую в приложении функцию из стандартной ДЛЛ, компилит нормальнго, а вот на линковке выдаёт следующую ошибку:
Unresolved external 'Имя функции' referenced from UNIT1.OBJ

В делфях при работе похожаю штука была пока не сделали следующее объявление:
stdcall; external 'имя библиотеки.dll' name 'имя функции';
и тогда всё заработало...

Не подскажите, что в Билдере такое нужно сделать, объявить, чтоб всё нормально запустилось???



При динамической загрузке библиотеки вроде бы нужно что-то такое:

 
Код:
void (*FunctionName)(char *s);  
HINSTANCE dllp = LoadLibrary("p.dll");  
if (dllp)
{  
 FunctionName = (void(*) (char*))  GetProcAddress(dllp,  "_FunctionName");  
 if (FunctionName) FunctionName("Hi From Dinamic DLL");  
}  
FreeLibrary(dllp);


FunctionName - функция, принимающая в параметры строку.
12K
02 марта 2006 года
CPit
12 / / 01.03.2006
Цитата:
Originally posted by Fevzi
Видимо линкер не знает где описание этой фун-ии.
нужно подключить соответствующий lib файл к проекту или вызывать фун-ию динамически из dll



Подключаю в проект напрямую папку с либой результат прежний... :(

12K
02 марта 2006 года
CPit
12 / / 01.03.2006
Цитата:
Originally posted by wAngel
При динамической загрузке библиотеки вроде бы нужно что-то такое:

 
Код:
void (*FunctionName)(char *s);  
HINSTANCE dllp = LoadLibrary("p.dll");  
if (dllp)
{  
 FunctionName = (void(*) (char*))  GetProcAddress(dllp,  "_FunctionName");  
 if (FunctionName) FunctionName("Hi From Dinamic DLL");  
}  
FreeLibrary(dllp);


FunctionName - функция, принимающая в параметры строку.



Попробовал, но толь у меня руки кривые, только неполучилось...

2.1K
02 марта 2006 года
wAngel
129 / / 23.11.2004
Цитата:
Originally posted by CPit
Попробовал, но толь у меня руки кривые, только неполучилось...



http://www.codenet.ru/progr/bcb/dll.php
Конечно, не ахти как написано, но вроде разобраться можно при желании...

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