如果没有相应的LIB文件,我该如何在C语言中使用DLL中的函数呢?我已经知道所有函数原型和它们的名称。
是的,你可以这样做。你应该使用GetProcAddress函数,直接在DLL中调用函数,而不涉及LIB。
显式链接到DLL的进程调用GetProcAddress来获取DLL中导出函数的地址。您使用返回的函数指针调用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);
}
}