您的位置:首页 > 其它

VC中DLL工程创建注意事项

2015-07-29 14:37 281 查看
DLL三种类型 (使用共享MFC DLL的规则,带静态链接MFC的规则,MFC扩展DLL)

通常如果开发的DLL不是跨平台使用的,都是创建MFC扩展DLL,这样能最大限度的使用DLL。

DLL导出类通常要添加宏AFX_EXT_CLASS来定义:

class <span style="color:#ff6666;">AFX_EXT_CLASS</span> TranFileWriter
{
public:
TranFileWriter(void);
~TranFileWriter(void);
void SaveTranFuncData(CString strTranFucFile,std::map<CString , std::vector<TranFunctionDataPtr>> &TsAnatomyData);
};


<span style="color:#ff6666;">#ifdef  MARKER_EXPORTS
#define MARKER_API _declspec(dllexport)
#else
#define MARKER_API _declspec(dllimport)
#endif</span>

class MARKER_API TranFileWriter
{
public:
TranFileWriter(void);
virtual ~TranFileWriter(void);
void SaveTranFuncData(CString strTranFucFile,std::map<CString , std::vector<TranFunctionDataPtr>> &TsAnatomyData);
};


这两种方式的定义是等价的;





#ifndef AFX_EXT_DATA
#ifdef _AFXEXT
#define AFX_EXT_CLASS       AFX_CLASS_EXPORT
#define AFX_EXT_API         AFX_API_EXPORT
#define AFX_EXT_DATA        AFX_DATA_EXPORT
#define AFX_EXT_DATADEF
#else
#define AFX_EXT_CLASS       AFX_CLASS_IMPORT
#define AFX_EXT_API         AFX_API_IMPORT
#define AFX_EXT_DATA        AFX_DATA_IMPORT
#define AFX_EXT_DATADEF
#endif
#endif
其中在DLL工程中会定义宏AFXEXT来确保导出设置;



也可参考msdn的帮助说明:
https://msdn.microsoft.com/zh-cn/library/9xyb5w93(VS.80).aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: