DLL导入导出相关
sshong 发表于2008年1月13日 16:48:00 更新于2008年3月21日 17:53:00
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需要自己手动添加预处理。
标签:无分类:C++阅读:4007
评论
暂无评论
添加评论
您的大名,限长10汉字,20英文(*)
电子信箱(*)
您的网站
正文,限长500汉字,1000英文(*)
验证码(*) 单击刷新验证码
联系我
博客订阅