MFC中包含了一些宏,这些宏内容在DLL定义文件和DLL调用程序中以不同的方式展开,这些宏有
宏名称 宏内容
AFX_CLASS_IMPORT __declspec(dllexport)
AFX_API_IMPORT __declspec(dllexport)
AFX_DATA_IMPORT __declspec(dllexport)
AFX_CLASS_EXPORT __declspec(dllexport)
AFX_API_EXPORT __declspec(dllexport)
AFX_DATA_EXPORT __declspec(dllexport)
AFX_EXT_CLASS #ifdef _AFXEXT AFX_CLASS_EXPORT
#else AFX_CLASS_IMPORT
AFX_EXT_API #ifdef _AFXEXT AFX_API_EXPORT
#else AFX_API_IMPORT
AFX_EXT_DATA #ifdef _AFXEXT AFX_DATA_EXPORT
#else AFX_DATA_IMPORT
特别是后面三个宏,使用最广泛,因为只用在类或函数声明的地方加上AFX_EXT_***即可,具体展开机制如下
如果用于DLL生成程序中,则表示输出(因为_AFX_EXT被定义,通常是在编译器的标识参数中指定该选项/D_AFX_EXT);
如果用于使用DLL的应用程序中,则表示输入(_AFX_EXT没有定义)。
见下图,
在MFC扩展DLL中,自动在项目编译器预处理中加入AFXEXT,而对于其他MFC规则DLL需要自己手动添加预处理。
DLL导入导出相关
发表于2008年1月13日 16:48:00 更新于2008年3月21日 17:53:00
评论
暂无评论添加评论
分类
琐碎文字 As3&Flex RIA UG English CodingArt C++ PHP Webserver E音乐盒 Unity3d C# JS&Html5 Tools mobile golang 最近发表
- js的锁以及异步调用相关(2024年11月30日 10:58:51)
- golang学习之函数/方法/接口(2022年1月6日 17:50:24)
- golang学习之零值(2022年1月6日 16:38:10)
- hello, 2018(2018年1月15日 22:47:25)
- 字体类型名词解释(2015年1月18日 11:29:14)
- 获取mysql表注释以及列注释(2014年11月13日 15:56:32)
- php连接ms sql数据库的一些问题(2014年9月15日 20:32:14)
- virtualbox虚拟网络:NAT&bridge桥接网络(2014年8月25日 22:51:35)
- php图片加水印(2014年8月15日 22:50:42)
- windows查看端口占用情况(2014年7月31日 21:19:30)
最近回复