在没有lib的C中使用DLL

问题描述 投票:10回答:2

如何在没有LIB文件的情况下使用C中的DLL中的函数?我知道所有函数原型及其名称。

c dll
2个回答
12
投票

是的,可以。您应该使用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);
   }
}

4
投票

您可以使用DarkXphenomenon的答案中所述的LoadLibrary()和GetProcAddress()。或者,另一种方法是通过创建一个.def文件,然后通过LIB命令运行该文件,以生成一个自己的DLL导入库。此处的其他详细信息:

http://support.microsoft.com/kb/131313

© www.soinside.com 2019 - 2024. All rights reserved.