资源描述:
《操作系统原理实验七》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验七动态链接库的建立与调用一、实验目的(1)理解动态链接库的实现原理。(2)掌握Windows系统动态链接库的建立方法。(3)掌握Windows环境下动态链接库的调用方法。二、实验预备内容(1)动态链接库基础知识;(2)动态链接库入口函数;(3)动态链接库导入/导出函数;(4)动态链接库的两种链接方式(隐式链接、显式链接);(5)函数调用参数传递约定。三、实验内容(1)在Windows环境下建立一个动态链接库。(2)使用隐式调用法调用动态链接库。(3)使用显式调用法调用动态链接库。四、实验要求掌握动态链接库建立和调用方法。在WindowsXP+
2、MicrosoftVisualC++环境下建立一个动态链接库,并分别使用隐式和显式方式将其调用,从而体会使用动态链接库的优点。该实验完成了动态链接库的建立和调用。函数Add()和Sub()在动态链接库文件SimpleDll.cpp中,分别完成两个整数的相加和相减。而调用该动态链接库的程序文件是CallDll.cpp,程序运行结果如下:<参考程序 >//SimpleDll.cpp:DefinestheentrypointfortheDLLapplication.//#include"stdafx.h"extern"C"_declspec(dllex
3、port)intAdd(intx,inty);extern"C"_declspec(dllexport)intSub(intx,inty);BOOLAPIENTRYDllMain(HANDLEhModule,DWORDul_reason_for_call,LPVOIDlpReserved){returnTRUE;}intAdd(intx,inty){代码1//加法定义}intSub(intx,inty){代码2//减法定义}//隐式调用动态链接库的程序//CallDll.cpp:Definestheentrypointfortheconsolea
4、pplication.//#include"stdafx.h"extern"C"_declspec(dllimport)intAdd(intx,inty);extern"C"_declspec(dllimport)intSub(intx,inty);intmain(intargc,char*argv[]){intx=7;inty=6;intadd=0;intsub=0;printf("CallDllNow!");add=代码3;sub=代码4;//隐式调用动态链接库printf("7+6=%d,7-6=%d",add,sub);retur
5、n0;}//显式调用动态链接库的程序//CallDllAddress.cpp:Definestheentrypointfortheconsoleapplication.//#include"stdafx.h"#include"CallDllAddress.h"#ifdef_DEBUG#definenewDEBUG_NEW#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#endif///////////////////////////////////////////////////////////////
6、////////////////TheoneandonlyapplicationobjectCWinApptheApp;usingnamespacestd;int_tmain(intargc,TCHAR*argv[],TCHAR*envp[]){ints;intnRetCode=0;typedefint(*pAdd)(intx,inty);typedefint(*pSub)(intx,inty);HMODULEhDll;pAddadd;pSubsub;hDll=LoadLibrary("SimpleDll.dll");//加载动态链接库文件if(
7、hDll==NULL){printf("LoadLibraryError.......");returnnRetCode;}elseprintf("LoadLibrarySuccess.......");add=代码5;//得到动态链接库中函数Add()的内部地址s=代码6;//显式调用printf("6+2=%d",s);sub=代码7;//得到动态链接库中函数Sub()的内部地址s=代码8;//显式调用printf("6-2=%d",s);FreeLibrary(hDll);//释放动态链接库returnnRetCode;}四
8、、思考本实验介绍了在WindowsXP+MicrosoftVisualC++6.0环境下建立与调用动态链接库的方法,使用动态链接库,除了