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