选择显示字体大小

动态连接库(dll)

作者:雷神

  把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函数。


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons