Win32 DLL动态库学习笔记一
2012-07-13 00:20
218 查看
Win32 动态库分三种:Non-MFC DLL(非MFC 动态库)、MFC Regular DLL(MFC 规则DLL)、MFC Extension DLL(MFC 扩展DLL)。本文主要记录非MFC动态库。
在我看来,采用库机制要知道两方面:一、建立动态库;二、使用动态库。再要明白动态库导出的是什么,有变量,函数和类三种。再要看动态库的两种调用方法显示调用、隐式调用。
建库时,有三种方式来指导产生.dll和.lib文件两个文件:
一、使用__declspec(dllexport)声明。
二、若是使用模块定义文件(.def)来指导产生.dll和.lib文件两个文件。
三、LINK 命令中的 /EXPORT 规范
若两种方式都选择,则所有指明导出的函数都将被导出。
DLL对象导入的两种方式:
显示加载:
a)使用函数 LoadLibrary,GetProcAddress,FreeLibrary 三个函数,就足够完成调用要求。
b)要注意的是 GetProcAddress 函数的返回值需要强制转换为目标格式,所以一般需要使用typedef定义一个类型,用于定义一个变量,同时用于格式转换。
c)显示加载动态库只能导出函数,要获取变量或者设置变量需要通过函数包装形式进行。
隐式加载:
a)导入lib文件。可以使用#pragma comment(lib,"")加入,也可以使用编译命令,或者IDE选项。然后在调用文件中使用extern "C" __declspec(dllimport)修饰要导入的函数,就能够直接使用函数而不需要转换咯。也可以不使用修饰符,而使用GetPorcAddress函数通过序号来加载,这时GetProcAddress的第一个参数可以使用GetModuleHandle获得,第二个参数为序号,使用MAKEINTRESOURCE(1)宏代替,括号内为序号
在我看来,采用库机制要知道两方面:一、建立动态库;二、使用动态库。再要明白动态库导出的是什么,有变量,函数和类三种。再要看动态库的两种调用方法显示调用、隐式调用。
建库时,有三种方式来指导产生.dll和.lib文件两个文件:
一、使用__declspec(dllexport)声明。
二、若是使用模块定义文件(.def)来指导产生.dll和.lib文件两个文件。
三、LINK 命令中的 /EXPORT 规范
若两种方式都选择,则所有指明导出的函数都将被导出。
DLL对象导入的两种方式:
显示加载:
a)使用函数 LoadLibrary,GetProcAddress,FreeLibrary 三个函数,就足够完成调用要求。
b)要注意的是 GetProcAddress 函数的返回值需要强制转换为目标格式,所以一般需要使用typedef定义一个类型,用于定义一个变量,同时用于格式转换。
c)显示加载动态库只能导出函数,要获取变量或者设置变量需要通过函数包装形式进行。
隐式加载:
a)导入lib文件。可以使用#pragma comment(lib,"")加入,也可以使用编译命令,或者IDE选项。然后在调用文件中使用extern "C" __declspec(dllimport)修饰要导入的函数,就能够直接使用函数而不需要转换咯。也可以不使用修饰符,而使用GetPorcAddress函数通过序号来加载,这时GetProcAddress的第一个参数可以使用GetModuleHandle获得,第二个参数为序号,使用MAKEINTRESOURCE(1)宏代替,括号内为序号
相关文章推荐
- Win32学习笔记——动态库其他
- c语言学习笔记 之调用dll动态库
- win32 dll学习笔记
- [学习备忘录]Linux平台静态库、动态库的一些笔记
- Win32学习笔记 - CreateWindowEx()函数
- Win32学习笔记 序
- Win32学习笔记 第四章 输出文本_1
- 我的学习笔记之四——inline使用DLL进行全局HOOK的改进(ring3_inline_dll_hook_Messagebox_临界区)
- Win32学习笔记 第三章 HelloWin 选择自 villager 的 Blog
- cocos2d-x-3.1 win32程序-初识源码(coco2d-x 学习笔记二)
- vs2008下win32 dll封装笔记
- 吕鑫MFC就业培训宝典学习笔记—创建一个简单的win32应用程序(2-1)
- C语言学习笔记--动态库和静态库的使用
- 学习Windows Mobile开发系列笔记(win32基本程序框架)
- 深入浅出MFC学习笔记:(第一章:win32基本概念,第二章:C++的重要性质)
- win32汇编 屏幕截图保存BMP 学习笔记<第四篇>之生成BMP文件
- Dll学习笔记
- Win32学习笔记 第二章
- MFC学习笔记1--Win32基本程序观念
- Win32编程day15 学习笔记