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 阅读(1080) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2006年11月>
2930311234
567891011
12131415161718
19202122232425
262728293012
3456789

常用链接

留言簿(7)

随笔档案

最新随笔

搜索

  •  

最新评论

阅读排行榜

评论排行榜