操作系统实验(四)动态链接库的建立与调用

操作系统实验(四)动态链接库的建立与调用

ID:38342375

大小:37.00 KB

页数:3页

时间:2019-06-10

操作系统实验(四)动态链接库的建立与调用_第1页
操作系统实验(四)动态链接库的建立与调用_第2页
操作系统实验(四)动态链接库的建立与调用_第3页
资源描述:

《操作系统实验(四)动态链接库的建立与调用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、动态链接库的建立与调用姓名:蒙吉学号:20072411603实验名称:动态链接库的建立与调用实验目的:1)理解动态链接库的实现原理;2)掌握WINDOWS系统动态链接库的建立方法;3)掌握WINDOWS环境下动态链接库的调用方法。实验准备知识:1)动态链接库基础知识;2)动态链接库入口函数(DllMain);3)动态链接库导入/导出函数:声明导出函数的代码:_declspec(dllexport)MyDllFunction(intx,inty);声明导入函数的代码:_declspec(dllexport)MyDllAdd(intx,int

2、y);4):隐式连接和显式连接;5)函数调用参数传递约定:(1)_stdcall调用约定;(2)C调用约定;(3)_fastcall调用约定。实验内容:1)在WINDOWS环境下建立一个动态链接库;2)使用隐式调用法调用动态链接库;3)使用显式调用法调用动态链接库;实验要求:掌握动态链接库建立和调用方法。在WINDOWSXP+VC++6.0环境下建立一个动态链接库,并分别使用隐式和显式将其调用,从而体会使用动态链接库的优点。参考源代码://SimpleDll.cpp:DefinestheentrypointfortheDLLapplica

3、tion.#include"stdafx.h"extern"C"_declspec(dllexport)intAdd(intx,inty);extern"C"_declspec(dllexport)intSub(intx,inty);BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){returnTRUE;}intAdd(intx,inty){intz;z=x+y;returnz;}intSub(intx,inty){intz;z=x-y;

4、returnz;}//隐式调用动态链接库的程序//CallDll.cpp:Definestheentrypointfortheconsileapplication.#include"stdafx.h"extern"C"_declspec(dllimport)intAdd(intx,inty);extern"C"_declspec(dllimport)intSub(intx,inty);intmain(intargc,char*argv[]){intx=7;intx=6;intadd=0;intsub=0;printf("CallDllNo

5、w!");//调用动态链接库add=Add(x,y);sub=Sub(x,y);printf("7+6=%d,7-6=%n",add,sub);return0;}//显示调用动态链接库的程序//CallDllAddress.cpp:Definestheentrypointfortheconsoleapplication.#include"stdafx.h"#include"CallDllAddress.h"#ifdaf_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS__FLL

6、E[]=__FILE__;#endif/////////////////////////////////////////////////////////////////TheoneandonlyapplicationobjectCWinApptheApp;usingnamespacestd;int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){ints;intnRetCode=0;typedefint(*pAdd)(intx,inty);typedefint(*pSub)(intx,inty);HMOD

7、ULEhDll;pAddadd;pSubsub;hDll=LoadLibrary("SimpleDll.dll");//加载动态链接库文件SimpleDll.dllif(hDll==NULL){printf("LoadLobraryError......");returnnRetCode;}elseprintf("LoadLibrarySuccess......");add=(pAdd)GetprocAddress(hDll,"Add");//得到动态链接中函数Add()的内部地址s=add(6,2);printf("6+2=%d

8、",s);sub=(pSub)GetprocAddress(hDll,"Sub");//得到动态链接库中函数Sub()的内部地址s=sub(6,2);printf("6-2=%d",s

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

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

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