Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Листинги / Листинги / 31-03-UseDll

.cpp
Скачиваний:
5
Добавлен:
24.03.2016
Размер:
1.41 Кб
Скачать
#include <windows.h>
#include <iostream.h>

int main()
{
  HMODULE  hDll;     // дескриптор DLL
  int (*Add)(int);   // указатель на функцию Add из DLL
  int (*Sub)(int);   // указатель на функцию Sub из DLL
  int *pCount;       // указатель на переменную count из DLL

  // загружаем динамически подключаемую библиотеку
  hDll = LoadLibrary("Count.dll");
  if (!hDll)
  {
    cerr << "Load library failed." << endl;
    return GetLastError();
  }
  // настраиваем адрес переменной count из DLL
  pCount = (int *)GetProcAddress(hDll, MAKEINTRESOURCE(3));
  if (!pCount)
  {
    cerr << "Get variable address failed." << endl;
    return GetLastError();
  }
  // выводим начальное значение переменной count
  cout << "Initial count = " << (*pCount) << endl;
  // настраиваем адреса функций
  Add = (int (*)(int))GetProcAddress(hDll, MAKEINTRESOURCE(1));
  Sub = (int (*)(int))GetProcAddress(hDll, MAKEINTRESOURCE(2));
  if (!Add || !Sub)
  {
    cerr << "Get procedure address failed." << endl;
    return GetLastError();
  }
  // изменяем значение счетчика
  cout << "count = " << Add(20) << endl;
  cout << "count = " << Sub(15) << endl;
  // отключаем библиотеку
  if (!FreeLibrary(hDll))
  {
    cerr << "Free library failed." << endl;
    return GetLastError();
  }
    // выходим из программы
  cout << "Press any key to exit.";
  cin.get();

  return 0;
}
Соседние файлы в папке Листинги