预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共12页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

-- 上海电力学院 计算机操作系统原理 实验报告 题目:实验一动态链接库的建立与调用 院系:计算机科学与技术学院 班级: 学生姓名:学号: 评语: 成绩: 2014年10月10日 上海电力学院 实验报告 课程名称:计算机操作系统实验项目:动态链接库的建立与实调用 姓名:学号:班级:专业: 同组人姓名无指导教师姓名徐曼实验日期 一.实验目的和要求: 1.理解动态链接库的实现原理; 2.掌握WINDOWS系统动态链接库的建立方法; 3.掌握WINDOWS环境下动态链接库的调用方法。 4.掌握动态链接库建立和调用方法,在WINDOWSXP+VC++6.0环境下建立一个动态链接并分别使用隐式和显式将其调用,从而体会使用动态链接库的优点。 二.实验内容: 1.在Windows环境下建立一个动态链接库。 2.使用隐式调用法调用动态链接库。 3.使用显式调用法调用动态链接库。 三.实验平台: VisualStudioC++6.0 实验原理 本次实验将在Windows7和VisualStudioC++6.0环境下建立一个动态链接库,分别使用隐式和显示的方式将其调用。动态链接库是一个可执行模块,它包含的函数可以由Windows应用程序调用提供所需功能,为应用程序提供服务。 实验步骤与记录 1)启动VisualStudioC++6.0 2)选择file->new命令,新建一个Win32Dynamic-LinkLinrary程序。 3)创建一个简单的工程 4)用户直接使用DllMain的动态链接库入口函数 5)使用编译连接工具生成动态链接库 6)动态连接库的隐式调用首先建立一个Win32ConsoleApplication,在位置栏内输入工程文件名所在路径。 7)选择控制台文件类型:一个支持MFC的程序,单击完成按钮。 用此文件中的CallDll.cpp调用前面建立好的函数动态链接库Mydll.dll 9)生成控可执行文件之前,把Mydll.dll复制到工程文件CallDll的debug文件中,将Mydll.lib复制到CallDll.cpp中,然后在MicrosoftVisualC++环境下,选择ProjectSetting命令,在连接选项中的ProjectOptions文本框中输入动态链接库的导入/导出库文件Mydll..lib 10)如果需要设置函数调用参数传递,在编辑环境中进行设置。选择工程->设置,在C/C++选项中的Category下拉列表框中选择CodeGeneration,在Callingconvention选择_cdecl。 隐式调用实验结果截图: 12)选择file→new命令,选择Win32ConsoleApplication建立一个控制台工程文件Call。 13)选择一个支持MFC的程序 打开编辑环境,编译后,连接并运行程序。 显示调用实验结果截图 程序源代码 1.建立动态链接库Mydll.cpp文件源代码: //jkh.cpp:DefinestheentrypointfortheDLLapplication. #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; returnz; } 2.隐式调用动态链接库CallDll.cpp文件源代码 #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!\n"); add=Add(x,y); sub=Sub(x,y); printf("7+6=%d,7-6=%d\n",add,sub); return0; } 3.显示调用动态链接库Mydll.dll的Call.cpp文件源代码: