关于vc中的dll的编程

关于vc中的dll的编程

ID:33760252

大小:53.81 KB

页数:6页

时间:2019-03-01

关于vc中的dll的编程_第1页
关于vc中的dll的编程_第2页
关于vc中的dll的编程_第3页
关于vc中的dll的编程_第4页
关于vc中的dll的编程_第5页
资源描述:

《关于vc中的dll的编程》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、关于VC中的DLL的编程在我们实际用软件时,经常可看到许多动态连接库。动态连接库有其自身的优点如节省内存、支持多语种等功能,而且,当DLL中的函数改变后,只要不是参数的改变调用起的函数并不需要重新编译。这在编程时十分有用。至于其他妙处,各位在电脑杂志、书籍中都能看到,我这里再说就是废话了.这次小弟我所要讲的是如何在VC5.0中如何做自己的Win32DLLs,各位要做自己的动态连接库,首先要知道DLL在VC5.0中都有哪几种分类。VC支持三种DLL,它们是:1.Non-MFCDlls2.RegularDlls3.ExtensionDllsNote:翻译措辞不当,故遇到术语是引用原词Non

2、-MFCDLL:指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。LL,RegularDLL:和下述的ExtensionDlls一样,是用MFC类库编写的。明显的特点是在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上的。但静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。ExtensionDLL:用来实现从MFC所继承下来的类的重新利用,也就是说,用这种类型的动态连接库,可以用来输出一个从MFC所继承下来的类。ExtensionDLL使用MFC的动态连接版本

3、所创建的,并且它只被用MFC类库所编写的应用程序所调用。各位看到这里如果眼有点花或头有点晕,请别泄气,再看两遍,然后继续往下看,定有收获。标题:关于VC中的DLL的编程[1]这一节介绍Non-MFCDLLs的编写方法。下面是一个通用的写法:BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){switch(ul_reason_for_call){caseDLL_PROCESS_ATTACH:.......caseDLL_THREAD_ATTACH:.......caseDLL_THREAD

4、_DETACH:.......caseDLL_PROCESS_DETACH:.......}returnTRUE;}每一个DLL必须有一个入口点,这就象我们用C编写的应用程序一样,必须有一个WINMAIN函数一样。在这个示例中,DllMain是一个缺省的入口函数,你不需要编写自己的DLL入口函数,并用linker的命令行的参数开关/ENTRY声明。用这个缺省的入口函数就能使动态连接库被调用时得到正确的初始化,当然了,你不要在初始化的时候填写使系统崩溃的代码了。参数中,hMoudle是动态库被调用时所传递来的一个指向自己的句柄(实际上,它是指向_DGROUP段的一个选择符)ul_reas

5、on_for_call是一个说明动态库被调原因的标志。当进程或线程装入或卸载动态连接库的时候,操作系统调用入口函数,并说明动态连接库被调用的原因。它所有的可能值为:DLL_PROCESS_ATTACH:进程被调用DLL_THREAD_ATTACH:线程被调用DLL_PROCESS_DETACH:进程被停止DLL_THREAD_DETACH:线程被停止lpReserved是一个被系统所保留的参数。入口函数已经写了,盛下的也不难,你可以在文件中加入你所想要输出的函数或变量或c++类或、或、或、?好象差部多了。Lookhere!现在就要加入一个新的输出函数了:void_declspec(dl

6、lexport)JustSoSo(){MessageBox(NULL,"It'ssoeasy!","Hahaha......",MB_OK);}要输出一个类也可以,如下:class_declspec(dllexport)Easy{//addyourclassdefinition...};各位一定注意到在输出函数或类是我用到_declspec(dllexport),这是VC提供的一个关键字,用它可在动态连接库中输出一个数据、一个函数或一个类。用这个关键字可省你不少事,你不用在.DEF文件中说明我要输出这个类、那个函数的。Ok!各位照着上面的例子试着敲敲看,Justsoeasy!先说到这了

7、发信人:dragon(龙),信区:VC标题:关于VC中的DLL的编程[2]前面讲到Non-MFCDLL的编法,现在讲讲调用DLL的方法。对DLL的调用分为两种,一种是显式的调用,一种是隐式的调用。所谓显式的调用,是指在应用程序中用LoadLibrary或MFC提供的AfxLoadLibrary显式的将自己所做的动态连接库调近来,动态连接库的文件名即是上两函数的参数,再用GetProcAddress()获取想要引入的函数。自此,你就可以象使用如同

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。