当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: http://www.microsoft.com/china/c
 

 

    摘要: vs2005的预发布版已经有了下载,我试用了一下,发现在system.windows.forms命名空间提供了许多新的控件,对winform编程提供了方便,现将我的使用经验拿出来与大家分享! web browser控件 该控件是2005中新加入的一个控件,利用这个控件可以很快编写一个浏览器。 以下就以一个简单的浏览器开发为例介绍该控件。 首先运行visual c# expre......
 ·教你在c#中如何读写ini文件    »显示摘要«
    摘要: 教你在c#中如何读写ini文件   在c#中读取和写入ini文件的一段代码,其实本文只是指出一个方向,希望大家能够触类旁通。   //写ini文件  [ dllimport ( "kernel32" ) ]  private static extern bool writeprivateprofilestring ( string se......


DLL(Dynamic Link Libraries)专题(转帖)

http://www.microsoft.com/china/community/program/originalarticles/techdoc/dll.mspx

引言 调用方式 mfc中的dll dll入口函数 关于约定 关于dll的函数 模块定义文件(.def) dll程序与调用其输出函数的程序的关系 作者 引言 比较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它们彼此协作来完成整个软件系统的工作.可能存在一些模块的功能较为通用,在构造其它软件系统时仍会被使用.在构造软件系统时,如果将所有模块的源代码都静态编译到整个应用程序exe文件中,会产生一些问题:一个缺点是增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的内存空间,造成系统资源的浪费;另一个缺点是,在编写大的exe程序时,在每次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于阶段性的单元测试. windows系统平台上提供了一种完全不同的较有效的编程与运行环境,你可以将独立的程序模块创建为较小的dll(dynamic linkable library)文件,并可对它们单独编译与测试.在运行时,只有当exe程序确实要调用这些dll模块的情况下,系统才会将它们装载到内存空间中.这种方式不仅减少了exe文件的大小与对内存空间的需求,而且使这些dll模块可以同时被多个应用程序使用.windows自己就将一些主要的系统功能以dll模块的形式实现. 一般来说,dll是一种磁盘文件,以.dll..drv..fon..sys与许多以.exe为扩展名的系统文件都可以是dll.它由全局数据.服务函数与资源组成,在运行时被系统加载到进程的虚拟空间中,成为调用进程的一部分.如果与其它dll之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上.dll模块中包含各种导出函数,用于向外界提供服务.dll可以有自己的数据段,但没有自己的堆栈,使用与调用它的应用程序相同的堆栈模式;一个dll在内存中只有一个实例;dll实现了代码封装性;dll的编制与具体的编程语言及编译器无关. 在win32环境中,每个进程都复制了自己的读/写全局变量.如果想要与其它进程共享内存,必须使用内存映射文件或者声明一个共享数据段.dll模块需要的堆栈内存都是从运行进程的堆栈中分配出来的.windows在加载dll模块时将进程函数调用与dll文件的导出函数相匹配.windows操作系统对dll的操作仅仅是把dll映射到需要它的进程的虚拟地址空间里去.dll函数中的代码所创建的任何对象(包括变量)都归调用它的线程或进程所有. 调用方式 1.静态调用方式:由编译系统完成对dll的加载与应用程序结束时dll卸载的编码(如还有其它程序使用该dll,则windows对dll的应用记录减1,直到所有相关程序都结束对该dll的使用时才释放它),简单实用,但不够灵活,只能满足一般要求. 隐式的调用:需要把产生动态连接库时产生的.lib文件加入到应用程序的工程中,想使用dll中的函数时,只须说明一下.隐式调用不需要调用loadlibrary()与freelibrary().程序员在建立一个dll文件时,链接程序会自动生成一个与之对应的lib导入文件.该文件包含了每一个dll导出函数的符号名与可选的标识号,但是并不含有实际的代码.lib文件作为dll的替代文件被编译到应用程序项目中. 当程序员通过静态链接方式编译生成应用程序时,应用程序中的调用函数与lib文件中导出符号相匹配,这些符号或标识号进入到生成的exe文件中.
...   下一页
 ·asp.net 2.0页面框架的几处变化    »显示摘要«
    摘要: 新增的页面事件:在asp.net 2.0中,一个asp.net页面的生命周期主要为(红色字体表示asp.net 2.0新增加的阶段页面事件):客户端请求页面—》预初始化(onpreinit)—》初始化(oninit)—》完成初始化(oninitcomplete)—》载入viewstate(loadviewstate)—》处理回送数据(......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE