Поделиться через


Явное связывание

Обновлен: Ноябрь 2007

При явном связывании приложения должны выполнять вызов функции для явной загрузки библиотеки DLL во время выполнения. Чтобы выполнить явное связывание с библиотекой DLL, приложение должно выполнить следующие действия.

  • Вызвать функцию LoadLibrary (или аналогичную функцию) для загрузки библиотеки DLL и получения дескриптора модуля.

  • Вызвать функцию GetProcAddress, чтобы получить указатель для каждой экспортируемой функции, вызываемой приложением. Поскольку приложения вызывают функции библиотек DLL с помощью указателя, компилятор не создает внешних ссылок, поэтому нет необходимости выполнять связывание с библиотекой импорта.

  • Вызвать функцию FreeLibrary по завершении всех действий с библиотекой DLL.

Пример.

typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);
...

HINSTANCE hDLL;               // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1;    // Function pointer
DWORD dwParam1;
UINT  uParam2, uReturnVal;

hDLL = LoadLibrary("MyDLL");
if (hDLL != NULL)
{
   lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
                                           "DLLFunc1");
   if (!lpfnDllFunc1)
   {
      // handle the error
      FreeLibrary(hDLL);       
      return SOME_ERROR_CODE;
   }
   else
   {
      // call the function
      uReturnVal = lpfnDllFunc1(dwParam1, uParam2);
   }
}

Выполняемые задачи

Дополнительные сведения

См. также

Основные понятия

Связывание исполняемого файла с библиотекой DLL