Dll
Ни в одной книжке про это не написано.
У меня есть DLL как мне подключить её к своей программе и пользоваться функциями из неё...
Ни в одной книжке про это не написано.
Загружаем библиотеку
HINSTANCE hLib=LoadLibrary("DLLTEST.DLL");
После этого можешь пользоваться любыми функциями которые предоставляет данная ДЛЛ
if(hLib==NULL)
{
cout << "Unable to load library!" << endl;
return;
}
Выгружаем библиотеку
FreeLibrary((HMODULE)hLib);
или
FreeLibrary("DLLTEST.DLL");
Точно не помню...
Загружаем библиотеку
HINSTANCE hLib=LoadLibrary("DLLTEST.DLL");
После этого можешь пользоваться любыми функциями которые предоставляет данная ДЛЛ
if(hLib==NULL)
{
cout << "Unable to load library!" << endl;
return;
}
Выгружаем библиотеку
FreeLibrary((HMODULE)hLib);
или
FreeLibrary("DLLTEST.DLL");
Точно не помню...
Про использование функций поподробнее, их же нужно где-то впрорамме описать?
Как их описать и пользоваться
У меня есть DLL как мне подключить её к своей программе и пользоваться функциями из неё...
Ни в одной книжке про это не написано.
Всё зависит от того, как ты хочешь подключать свою DLL. Можно подключить динамически, т.е. через LoadLibrary, а можно статичеси, т.е. автоматически на этапе загрузки приложения. Если нет особых оснований использовать динамическую загрузку, то лучше использовать статическую, т.к. не надо будет мучаться с GetProcAddress для необходимых ф-ций из DLL. Для статического подключения тебе потребуется кроме самой DLL ещё заголовочный файл .H с объявлениями ф-ций DLL и файл с расширением .LIB, который нужно указать линковщику. Файл .LIB либо поставляется с DLL, либо можно сгенерировать самому, как это сделать описано в MSDN: Q131313 "How to create 32-bit Import Libraries Without .OBJs or Source"
При написании своей программы тебе остается только подключить заголовочный файл, там где необходтмо использовать ф-ции из DLL, и использовать имена ф-ций объявленные в заголовочном файле, т.е. как, например, при использовании ф-ций WinAPI, ты лишь подключаешь windows.h и потом незадумываясь используешь, например, MessageBox().
При использовании же динамической загрузки тебе придется для начала определить типы указателей на ф-ции, основываясь на объявления самих ф-ций, загрузить DLL (LoadLibrary), получить адреса ф-ций из DLL (GetProcAddress) и только после этого вызавать сами ф-ции не явным использованием объявленных имен ф-ций, а через полученные указатели на них.