在没有lib的C中使用DLL

时间:2012-07-28 04:17:57

标签: c dll

搜索谷歌有关C的主题非常困难,因为我一直在寻找与C#或C ++相关但不是C的结果,所以也许有人可以给我一个快速,直截了当的答案。如何在没有LIB文件的情况下使用C中的DLL中的函数?我知道所有的函数原型及其名称。

提前致谢!

2 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:3)

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

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