收藏 分享(赏)

操作系统原理实验七new.doc

上传人:dreamzhangning 文档编号:2209228 上传时间:2018-09-05 格式:DOC 页数:4 大小:38KB
下载 相关 举报
操作系统原理实验七new.doc_第1页
第1页 / 共4页
操作系统原理实验七new.doc_第2页
第2页 / 共4页
操作系统原理实验七new.doc_第3页
第3页 / 共4页
操作系统原理实验七new.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

1、实验七 动态链接库的建立与调用一、实验目的(1) 理解动态链接库的实现原理。(2) 掌握 Windows 系统动态链接库的建立方法。(3) 掌握 Windows 环境下动态链接库的调用方法。二、实验预备内容(1) 动态链接库基础知识;(2) 动态链接库入口函数;(3) 动态链接库导入/导出函数;(4) 动态链接库的两种链接方式(隐式链接、显式链接) ;(5) 函数调用参数传递约定。三、实验内容(1) 在 Windows 环境下建立一个动态链接库。(2) 使用隐式调用法调用动态链接库。(3) 使用显式调用法调用动态链接库。四、实验要求掌握动态链接库建立和调用方法。在 WindowsXP+Micr

2、osoft Visual C+环境下建立一个动态链接库,并分别使用隐式和显式方式将其调用,从而体会使用动态链接库的优点。该实验完成了动态链接库的建立和调用。函数 Add()和 Sub()在动态链接库文件 SimpleDll.cpp 中,分别完成两个整数的相加和相减。而调用该动态链接库的程序文件是 CallDll.cpp,程序运行结果如下:/ SimpleDll.cpp : Defines the entry point for the DLL application./#include “stdafx.h“extern “C“ _declspec(dllexport) int Add(int

3、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)代码 1 /加法定义int Sub(int x,int y)代码 2 /减法定义/隐式调用动态链接库的程序/ CallDll.cpp : Defines the entry point for the console application./#

4、include “stdafx.h“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=代码 3;sub=代码 4; /隐式调用动态链接库printf(“ 7+6=%d ,7-6=%dn“,add,sub);return 0;/显式调用动态链接库的

5、程序/ 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 ar

6、gc, TCHAR* argv, TCHAR* envp)int s;int nRetCode = 0;typedef int (*pAdd)(int x,int y);typedef int (*pSub)(int x,int y);HMODULE hDll;pAdd add;pSub sub;hDll=LoadLibrary(“SimpleDll.dll“); /加载动态链接库文件 if(hDll=NULL)printf(“LoadLibrary Error.n“);return nRetCode;else printf(“LoadLibrary Success.n“);add=代码 5;

7、 /得到动态链接库中函数 Add()的内部地址 s=代码 6; /显式调用printf(“6+2=%dn“,s);sub=代码 7; /得到动态链接库中函数 Sub()的内部地址s=代码 8; /显式调用printf(“6-2=%dn“,s);FreeLibrary(hDll); /释放动态链接库return nRetCode;四、思考本实验介绍了在 WindowsXP+Microsoft Visual C+6.0 环境下建立与调用动态链接库的方法,使用动态链接库,除了可以节省内存空间、实现代码共享之外,还可以实现多种编程语言书写的程序相互调用。同学们在完成上述实验的基础上,可以自学完成其它语言如 Java 书写的程序调用 Visual C+建立动态链接库,从中体会多种语言编程给程序员带来的方便。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报