动态连接库(DLL)
来源:互联网 发布:淘宝阿里旅行投诉电话 编辑:程序博客网 时间:2024/05/09 11:18
把C++的类写进DLL里,单独的编译。程序运行时可以快速装载并连接到DLL上,这样叫做标准的模块软件。大大提高代码的重用型。DLL是运行时的模块。
Win32 DLL允许导出全局变量,就象导出函数一样。只要DLL申请内存,就从客户程序的进程的内存堆中进行内存分配。
DLL包含一个导出函数表,它包含了函数在DLL内的地址,但当客户程序装入DLL时并不知道要调用的函数地址,它是通过函数的符号化名字和序号来识别这些函数的。简单的程序通常是一个EXE从一个或多个DLL导入函数;
而实际上许多DLL调用了其他DLL里的函数。因此一个DLL可以同时有导入和导出。
在DLL代码中,我们必须显示声明导出函数在客户方也应声明对应的导入函数:
_declspec(dllexport) int MyFunction(int n); //DLL中
_declspec(dllimport) int MyFunction(int n); //exe
可以用将 extern"c" 加在函数声明的前面的方法来告诉编译器-需要使用普通的函数名,以防编译器产生其他语言不能使用的修饰名。
连接DLL可以是隐式连接或显式连接,隐式连接在客户程序被装载时装载,显式连接可以决定什么时候装载或卸出,还允许我们在运行时决定装载哪个DLL。
DLL的入口点是DllMain。进程中的每一个DLL都有一个唯一的32位HINSTANCE值所标识。此外进程本身也有一个HINSTANCE值,所有这些实例句柄只有在进程内部有效,它代表了DLL或EXE的起始虚拟地址。进程(EXE)实例句柄几乎总是0X400000,而装入在默认基地址的DLL的句柄是0X10000000,如果有多个DLL,则每个都有不同的HINSTANCE值。
获得EXE的句柄用NULL参数调用Win32的GetModuleHandle函数,获得DLL的句柄用DLL的名字做参数调用GetModuleHandle函数。
Win32 DLL允许导出全局变量,就象导出函数一样。只要DLL申请内存,就从客户程序的进程的内存堆中进行内存分配。
DLL包含一个导出函数表,它包含了函数在DLL内的地址,但当客户程序装入DLL时并不知道要调用的函数地址,它是通过函数的符号化名字和序号来识别这些函数的。简单的程序通常是一个EXE从一个或多个DLL导入函数;
而实际上许多DLL调用了其他DLL里的函数。因此一个DLL可以同时有导入和导出。
在DLL代码中,我们必须显示声明导出函数在客户方也应声明对应的导入函数:
_declspec(dllexport) int MyFunction(int n); //DLL中
_declspec(dllimport) int MyFunction(int n); //exe
可以用将 extern"c" 加在函数声明的前面的方法来告诉编译器-需要使用普通的函数名,以防编译器产生其他语言不能使用的修饰名。
连接DLL可以是隐式连接或显式连接,隐式连接在客户程序被装载时装载,显式连接可以决定什么时候装载或卸出,还允许我们在运行时决定装载哪个DLL。
DLL的入口点是DllMain。进程中的每一个DLL都有一个唯一的32位HINSTANCE值所标识。此外进程本身也有一个HINSTANCE值,所有这些实例句柄只有在进程内部有效,它代表了DLL或EXE的起始虚拟地址。进程(EXE)实例句柄几乎总是0X400000,而装入在默认基地址的DLL的句柄是0X10000000,如果有多个DLL,则每个都有不同的HINSTANCE值。
获得EXE的句柄用NULL参数调用Win32的GetModuleHandle函数,获得DLL的句柄用DLL的名字做参数调用GetModuleHandle函数。
- 动态连接库(DLL)
- .DLL 动态连接库
- DLL动态连接库
- 动态连接库dll
- DLL(动态连接库)
- 创建DLL动态连接库
- 创建DLL动态连接库
- 动态连接库 DLL 解释
- C# 动态添加DLL(动态连接库)
- 静态使用DLL动态连接库
- 动态连接库(DLL- Dynamic Link Library)
- MFC如何使用动态连接库DLL
- DLL(动态连接库)创建和使用
- MFC扩展动态连接库(dll)版本
- VS2010加载clutter动态连接库DLL
- MFC的动态连接库DLL
- 动态连接库(DLL)的基础知识
- 动态连接库DLL 和 静态连接库LIB
- asp.net gridview 格式化字符串问题
- VC++动态链接库(DLL)编程深入浅出(一)
- 找回自己,挑战自我,遨游海洋。
- VC++动态链接库(DLL)编程深入浅出(二)
- 最爱经典歌曲TOP500
- 动态连接库(DLL)
- 火车迷失在8月6号
- 软件测试中的80/20原则
- VC中DLL的创建及调用方法
- 学习开发DLL笔记
- VC编写的DLL如何给VB返回字符串
- 深度解析VC中的消息(上)
- 深度解析VC中的消息(中)
- 深度解析VC中的消息(下)