已知dll中参数类型,但不知道函数名的函数调用方法
已知dll中函数的调用类型,以及它是dll中的第几个函数,但不知道它具体的函数名(有时客户给的dll文件有这种情况),该如何调用它呢?
可以使用以下获取函数的方式,xx为函数序号:
pFun=GetProcAddress(hDLL, MAKEINTRESOURCE(xx))
以下是动态调用dll库的全部代码:
typedef void(*algo)(unsigned char *); //在调用DLL函数之前,要定义函数指针,用来调用函数。可以看出,函数指针的类型与DLL中的要一致。
HMODULE hMod = LoadLibrary(KeyTring); //调用LoadLibrary函数加载DLL文件。加载成功,hMod指针不为空。这里也可以是一个地址加文件名
if (hMod != NULL)
{
/*
如果加载成功,则可通过GetProcAddress函数获取DLL中需要调用的函数的地址。
获取成功,TOWIN_algorithm指针不为空。
*/
algo TOWIN_algorithm = (algo)GetProcAddress(hMod, MAKEINTRESOURCE(1));
if (TOWIN_algorithm != NULL)
{
TOWIN_algorithm(rSeed); //获取地址成功后,通过TOWIN_algorithm调用函数功能
}
FreeLibrary(hMod); //在完成调用功能后,不在需要DLL支持,则可以通过FreeLibrary函数释放DLL
}