如果是自己开发的DLL, 编译DLL时会生成LIB文件,把这个LIB文件链进你的工程,然后include进dll的H文件,就可以直接用了.
如果别人开发的第三方组件,一般也会给LIB文件和H文件,一样做.
如果都没有,但是知道函数名,那么用
HMODULE LoadLibrary(
LPCTSTR lpFileName
);
打开这个DLL,返回一个handle, 再用
FARPROC GetProcAddress(
HMODULE hModule,
LPCSTR lpProcName
);
得到函数的地址,然后就可以调用这个函数了.
完了FreeLibrary()就可以了.这叫运行时链接.
如果连函数接口也不知道,那就用一些工具软件如windepandent打开DLL看看输出函数的定义.
如下代码:
VOID main(VOID)
{
HINSTANCE hinstLib;
MYPROC ProcAdd;
BOOL fFreeResult, fRunTimeLinkSuccess = FALSE;
// Get a handle to the DLL module.
hinstLib = LoadLibrary("myputs.dll");
// If the handle is valid, try to get the function address.
if (hinstLib != NULL)
{
ProcAdd = (MYPROC) GetProcAddress(hinstLib, "myPuts");
// If the function address is valid, call the function.
if (NULL != ProcAdd)
{
fRunTimeLinkSuccess = TRUE;
(ProcAdd) ("message via DLL function/n");
}
// Free the DLL module.
fFreeResult = FreeLibrary(hinstLib);
}
// If unable to call the DLL function, use an alternative.
if (! fRunTimeLinkSuccess)
printf("message via alternative method/n");
}