Создание DLL
Т.е. как описывать экспортируемые функции.
И как описывать потом типы функций, указатели на которые будем получать с помощью GetProcAddress
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);
И это все!