vc++ 显式链接dll

来源:互联网 发布:数据流量打开不能上网 编辑:程序博客网 时间:2024/06/02 04:27
Visual C++
显式链接

在显式链接下,应用程序必须进行函数调用以在运行时显式加载 DLL。为显式链接到 DLL,应用程序必须:

  • 调用 LoadLibrary(或相似的函数)以加载 DLL 和获取模块句柄。

  • 调用 GetProcAddress,以获取指向应用程序要调用的每个导出函数的函数指针。由于应用程序是通过指针调用 DLL 的函数,编译器不生成外部引用,故无需与导入库链接。

  • 使用完 DLL 后调用 FreeLibrary

例如:

typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);...HINSTANCE hDLL;               // Handle to DLLLPFNDLLFUNC1 lpfnDllFunc1;    // Function pointerDWORD 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);   }}

您希望做什么?

  • 隐式链接

  • 确定要使用的链接方法

您想进一步了解什么?

  • LoadLibrary 和 AfxLoadLibrary

  • GetProcAddress

  • FreeLibrary 和 AfxFreeLibrary

  • Windows 用来定位 DLL 的搜索路径

请参见

概念

将可执行文件链接到 DLL
原创粉丝点击