操作系统原理实验 动态链接库的建立与调用4.doc_第1页
操作系统原理实验 动态链接库的建立与调用4.doc_第2页
操作系统原理实验 动态链接库的建立与调用4.doc_第3页
操作系统原理实验 动态链接库的建立与调用4.doc_第4页
操作系统原理实验 动态链接库的建立与调用4.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

- 8 -上海电力学院 计算机操作系统原理实验报告 题目: 动态链接库的建立与调用 院系: 计算机科学与技术学院 专业年级: 信息安全2010级 学生姓名: 李鑫 学号: 20103277 同组姓名: 无 2012年 11 月27 日上海电力学院实验报告课程名称 计算机操作系统原理 实验项目 线程的同步 姓名 李鑫 学号 20103277 班级 2010251班 专业 信息安全 同组人姓名 无 指导教师姓名 徐曼 实验日期 2012/11/27 实验目的和要求: (l)理解动态链接库的实现原理。 (2)掌握Windows系统动态链接库的建立方法。(3)掌握Windows环境下动态链接库的调用方法实验原理与内容(l)在Windows环境下建立一个动态链接库。(2)使用隐式调用法调用动态链接库。(3)使用显式调用法调用动态链接库。实验平台与要求掌握动态链接库建立和调用方法。在Windows XP_- Microsoft Visual C+6O环境下建立一个动态链接库,并分别使用隐式和显示方式将其调用,从而体会使用动态链接库的优点。操作系统:Windows 2000或Windows XP实验平台:Visual Studio C+ 6.0实验步骤与记录1、 启动安装好的Visual C+ 6.0。2、 选择File-New,新建Win32 Dynamic-Link Library程序, 单击确定按钮,完成创建。3、 创建一个简单的工程,单击完成。4、 打开编辑环境后,编辑程序,并且编译、链接并运行该程序,产生了MyDll4.dll文件。5、 新建Win32 Console Application工程,CallDll。6、 将上一步生成的MyDll4.dll文件放入Debug目录,将MyDll4.lib文件放入.cpp文件目录。7、 运行程序,输出结果。8、 新建工程,Win32 Console Application。9、 将MyDll4.dll复制到Debug目录下,输入代码,运行程序。10、实验分析与结论该实验完成了动态链接库的建立和调用。函数Add()和Sub()在动态链接库文件SimpleDll.cpp中,分别完成两个整数的相加和相减。而调用该动态链接库的程序文件是CaIIDll.cpp,该程序的运行结果如上图。主要源代码:产生Dll的工程/ MyDll4.cpp : Defines the entry point for the DLL application./#include stdafx.hextern C _declspec(dllexport) int Add(int x,int y);extern C _declspec(dllexport) int Sub(int x,int y);BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) return TRUE;int Add(int x,int y)int z;z=x+y;return z;int Sub(int x,int y)int z;z=x-y;return z;隐式调用:/ CallDll.cpp : Defines the entry point for the console application./#include stdafx.h#include #pragma comment(lib, MyDll4.lib) extern C _declspec(dllimport) int Add(int x,int y);extern C _declspec(dllimport) int Sub(int x,int y);int main(int argc, char* argv)int x=7;int y=6;int add=0;int sub=0;printf(Call Dll Now!n);add=Add(x,y);sub=Sub(x,y);printf(7+6=%d,7-6=%dn,add,sub);return 0;显示调用:/ CallDllAddress.cpp : Defines the entry point for the console application./#include stdafx.h#include CallDllAddress.h#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE = _FILE_;#endif/ The one and only application objectCWinApp theApp;using namespace std;int _tmain(int argc, TCHAR* argv, TCHAR* envp)int nRetCode = 0;int s;typedef int (*pAdd)(int x,int y);typedef int (*pSub)(int x,int y);HMODULE hDll;pAdd add;pSub sub;hDll=LoadLibrary(MyDll4.dll);if (hDll=NULL)printf(LoadLibrary Error.n);return nRetCode;elseprintf(LoadLibrary Success.n);add=(pAdd)GetProcAddress(hDll,Add);s=add(6,2);printf(6+2=%dn,s);sub=(pSub)GetProcAddr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论