Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > 其他编程语言 > 动态连接库(DLL)
【标  题】:动态连接库(DLL)
【关键字】:连接,动态,DLL,DLL
【来  源】:网络

动态连接库(DLL)

Your Ad Here

  把C++的类写进DLL里,单独的编译。程序运行时可以快速装载并连接到DLL上,这样叫做标准的模块软件。大大提高代码的重用型。DLL是运行时的模块。

  Win32 DLL允许导出全局变量,就象导出函数一样。只要DLL申请内存,就从客户程序的进程的内存堆中进行内存分配。

  DLL包含一个导出函数表,它包含了函数在DLL内的地址,但当客户程序装入DLL时并不知道要调用的函数地址,它是通过函数的符号化名字和序号来识别这些函数的。简单的程序通常是一个EXE从一个或多个DLL导入函数;

  而实际上许多DLL调用了其他DLL里的函数。因此一个DLL可以同时有导入和导出。

  在DLL代码中,我们必须显示声明导出函数在客户方也应声明对应的导入函数:

_declspec(dllexport) int MyFunction(int n); file://DLL
_declspec(dllimport) int MyFunction(int n); file://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教程22-超类化:【上一篇】
关于异常的使用心得:【下一篇】
【相关文章】
  • Win32教程17-动态链接库
  • 如何截获Oracle数据库连接密码
  • PB实现数据窗口动态排序的方法
  • 窗体动态效果的实现
  • PB动态报表的实现
  • PB的可执行文件所需的环境DLL
  • PB中实现数据窗口动态排序的三种方法
  • PBr连接Sybase-SQLServer的注意事项
  • 拨号连接RAS16/32全面解剖
  • 动态改变grid数据窗口的字段显示顺序
  • 【随机文章】
  • change name
  • 亮点压缩2.0正式版破解过程摘要
  • 修复不能拖放的ASF和WMV文件
  • 谈谈Flash的一些语法基础和系统核心 2.6 Array:多种数据结构的集合
  • UNIX本地脆弱性检查报告
  • Linux下如何实现IP与Mac地址的捆绑?
  • Windows XP系统应用技巧荟萃
  • Photoshop美食系列之糖果藤
  • intel Processor Dempsey test
  • 什么叫曲速运动?
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.