Presentation is loading. Please wait.

Presentation is loading. Please wait.

本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866.

Similar presentations


Presentation on theme: "本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866."— Presentation transcript:

1 本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:

2 <1> 使用静态链接生成的可执行文件体积较大 <2> 包含相同的公共代码,造成浪费
静态链接库的缺点: <1> 使用静态链接生成的可执行文件体积较大 <2> 包含相同的公共代码,造成浪费 OD 查看list

3 这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)。
1、什么是动态链接库? 动态链接库(Dynamic Link Library ,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式。 这些库函数的扩展名是 ”.dll"、".ocx"(包含ActiveX控制的库)。 OD 查看list

4 <1> extern "C" _declspec(dllexport) 调用约定 返回类型 函数名 (参数列表);
2、创建动态链接库 <1> extern "C" _declspec(dllexport) 调用约定 返回类型 函数名 (参数列表); <2> 使用.def文件: EXPORTS NONAME 使用序号导出的好处: 名字是一段程序就精华的注释,通过名字可以直接猜测到函数的功能 通过使用序号,可以达到隐藏的目的 导出表

5 3、使用动态链接库 步骤1: //定义函数指针,如: typedef int (__stdcall *lpPlus)(int,int);
步骤1: //定义函数指针,如: typedef int (__stdcall *lpPlus)(int,int); typedef int (__stdcall *lpSub)(int,int); 步骤2: //声明函数指针变量,如: lpPlus myPlus; lpSub mySub; 步骤3: //动态加载dll到内存中,如: HINSTANCE hModule = LoadLibrary("DllDemo.dll"); 步骤4: //获取函数地址,如: myPlus = (lpPlus)GetProcAddress(hModule, "Plus"); mySub = (lpSub)GetProcAddress(hModule, (char*)0x10); 步骤5: //调用函数,如: int a = myPlus(10,2); int b = mySub(10,2); 步骤6: //释放动态链接库,如: FreeLibrary(hModule);

6 昆山爱达人信息技术有限公司 QQ: 课后练习: <线上班>学员可见


Download ppt "本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址:www.bcdaren.com 联系QQ:1250121864 QQ交流群 :49759272 联系电话:0512-57882866."

Similar presentations


Ads by Google