Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Загрузка и выгрузка DLL


Автор: Sergio 7.6.2007, 15:38
Здраствуйте. Мне нужно загрузить и выгрузить DLL. Вот как я это написал:
Код

HINSTANCE hLib = LoadLibrary("3dsimp.dll");
 void (*X)(); 
  (FARPROC &)X = GetProcAddress(hLib, "X");
   FreeLibrary(hLib);
    X();

Правильно ли это? Или есть попроще варианты?
Зарание спасибо.

Автор: Fazil6 7.6.2007, 15:47
Цитата(Sergio @  7.6.2007,  15:38 Найти цитируемый пост)
Правильно ли это?

нет.

FreeLibrary(hLib); нужно делать после использования функций из dll , когда библиотека больше не нужна
После вызова FreeLibrary указатели могут стать невалидными

Автор: Sergio 7.6.2007, 16:01
Так:?
Код

HINSTANCE hLib = LoadLibrary("3dsimp.dll");
 void (*X)(); 
  (FARPROC &)X = GetProcAddress(hLib, "X");
    X();
   FreeLibrary(hLib);

Автор: Fazil6 7.6.2007, 16:15
Код

typedef  void (*X)(); 
X x;

HINSTANCE hLib = LoadLibrary("3dsimp.dll");

x = (X)GetProcAddress(hLib, "X");
x();

FreeLibrary(hLib);

Автор: EnergoHokum 8.6.2007, 09:20
Вот тут я попытался подробно рассказать про работу с дл-ками: http://forum.vingrad.ru/forum/topic-152099/kw-dll-error.html

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)