asm, c, c++ are my all
-- Core In Computer
posts - 139,  comments - 123,  trackbacks - 0
/********************************************\
|    欢迎转载, 但请保留作者姓名和原文链接, 祝您进步并共勉!     |
\********************************************/


动态链接库小结
作者: Jerry Cat
时间: 2006/09/02
链接: http://www.cppblog.com/jerysun0818/archive/2006/09/02/11974.html

一.库模块:

 (略)
 

二.实现(可以使用Visual C++提供的向导来创建动态链接库和静态链接库)

1>:Win32 Static Library

2>:Win32 Dynamic-Link-Library

3>:MFC AppWizard(dll)

Regular Dll With MFC statically linked

Regular Dll using shared MFC Dll

MFC Extension Dll (using shared MFC DLL)
 

三.Win32 DLL可以直接使用API,但是不可以直接使用MFC

MFC AppWizard可以直接使用MFC

四. Regular Dll using shared MFC Dll 和 MFC Extension Dll 两者比较

(表1 )

Regular Dll using shared MFC Dll

MFC Extension Dll (using shared MFC DLL)

1.       能导出 C 风格函数,全局变量

2.       能导出资源

1.       能导出 C 风格函数,全局变量

2.       能导出资源

3.       能导出 C++ 类,成员函数,重载函数

允许静态或者动态链接 MFC 类库

只能动态链接 MFC 类库

它允许客户程序静态或者动态链接

只允许客户程序动态链接

 

 

 

五.调用

1> 隐式链接

隐式链接时,使用 DLL 的程序需要获取以下信息:

 1. 包含了导出函数(类)声明的头文件

 2. 导入库 (lib_

 3. 实际的 DLL

  使用导出函数的源文件需要 #include ( 1 )的头文件,调用导出函数与其它函数完全一样

  建立可执行程序时,需要导入 LIB 文件,可通过以下方式实现

1.       Project->Setting->Link 在 Object/Library Modules 编辑框中指定 LIB 名字

2.       #pragma comment(lib,”LIB 名字 ”)

例如:我们想使用 opengl 函数,我们可以

1.#include<gl/gl.h>

 #include<gl/glu.h>

2.#pragma comment(lib, “glu32.lib”)

 #pragma comment(lib, “opengl32.lib”)

2> 显式链接

使用 DLL 的程序在运行时通过函数调用来显式加载或卸载 DLL ,并通过函数调用来调用 DLL 的导出函数。

 1. 使用 LoadLibrary 来加载 DLL ,得到模块句柄

 2. 调用 GetProcessAddress 来获取应用程序要调用的导出函数指针

 3. 使用结束后,用 FreeLibrary 来卸载 DLL

  例如:我们想使用 xxx.dll 中的 GetVersion 函数,我们可以

typedef UINT (CALLBACK* LPFNDLLFUN)(DWORD,UINT);

HINSTANCE hDll = LoadLibrary(“xxx.dll”);

if(hDll != NULL)
{
    LPFNDLLFUN lpfnDllFun1 = (LPFNDLLFUN)GetProcess(hDll, “GetVersion”);

    if(lpfnDllFun1)
    {
        // 你的函数调用
    }

   FreeLibrary(hDll);
}

posted on 2006-09-02 21:37 Jerry Cat 阅读(1134) 评论(0)  编辑 收藏 引用

<2006年11月>
日一二三四五六
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(7)

随笔档案

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜