zoukankan      html  css  js  c++  java
  • About DLL

    动态连接库的两种方式?
    答:调用一个DLL中的函数有两种方法:
    1.载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数
    ,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向
    系统提供了载入DLL时所需的信息及DLL函数定位。
    2.运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibrary或Loa
    dLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的
    出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了

    FARPROC GetProcAddress(
      HMODULE hModule,
      LPCSTR lpProcName
    );
    该函数输入dll的handler hModule 和 函数的名字lpProcName.
    返回一个函数指针,供调用. 见下面的例子.

    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);
    }
    }

  • 相关阅读:
    模版继承
    用一个指向int的指针来存储一个对象的地址。
    mysql 增 删 改 查
    虚函数背后的秘密2
    二叉树的应用—最优二叉树(哈夫曼树)
    虚函数
    经典贪心,哈夫曼编码。
    以下代码有什么问题?
    前缀运算和后缀运算
    虚函数背后的秘密
  • 原文地址:https://www.cnblogs.com/dqshll/p/1154675.html
Copyright © 2011-2022 走看看