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

Ваш аккаунт

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

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

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

Создание DLL

302
01 сентября 2003 года
Sagittarius
648 / / 12.04.2003
Люди, подскажите как создавать DLL.
Т.е. как описывать экспортируемые функции.
И как описывать потом типы функций, указатели на которые будем получать с помощью GetProcAddress
3.2K
01 сентября 2003 года
srd
50 / / 31.08.2003
Функции в DLL:

int __stdcall my_sqr(int param)
{
return param * param;
}

int __stdcall my_abs(int param)
{
return (param < 0) ? -param : param;
}

Далее, добавляешь в проект DEF файл и перечисляешь в нем эскпортируемые функции:

LIBRARY example.dll
EXPORTS
my_sqr
my_abs

Программа, которая использует эту DLL

// Тип указателя на функции
typedef int (__stdcall *Function)(int);

// Указатели на функции
Function my_abs, my_sqr;

// Грузим DLL
HMODULE handle = LoadLibrary("example.dll");

// Получаем адреса функций
my_abs = (Function)GetProcAddress(handle, "my_abs");
my_sqr = (Function)GetProcAddress(handle, "my_sqr");

// Пример
int n = -5;
n = my_abs(n);
n = my_sqr(n);

// Выгружаем DLL
FreeLibrary(handle);

А вообще, с GetProcAddress слишком много возни. Лучше сделать так.

// это в DLL
int __declspec(dllexport) int func(int a, int b)
{
// ...
}

// а это в программе

// прототип
int __declspec(dllimport) int func(int a, int b);

// вызов функции
func(5, 12);

И это все!

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