简介
VC6可以编写如下四种动态库:
Win32 DLL (图1 Win32 Dynamic-link Library)
Regular DLLs statically linked to MFC
Regular DLLs dynamically linked to MFC
MFC Extension DLL(using shared MFC DLL)
创建工程时,选择MFC AppWizard(dll)后,会进入图2所示的对话框,进行2、3、4的选择。
图1 MFC New
图2 MFC AppWizard(dll)
如何选择
详见https://msdn.microsoft.com/en-us/library/9se914de.aspx
如果dll不需要用到MFC,如CString等,则选择第一种(Win32 DLL)
Regular DLLs statically linked to MFC和Regular DLLs dynamically linked to MFC区别在于,后者为动态链接,If you statically link to MFC, the file size of your DLL will be larger and potentially take up extra memory because it loads its own private copy of the MFC library code.
相对于Regular DLLs,MFC Extension DLL(using shared MFC DLL)可以导出MFC类。
Regular DLLs dynamically linked to MFC
导出函数,可以使用__declspec(dllexport)或者在.def文件中声明。
使用前者,通常需要定义如下一段代码:
#ifdef DLLTEST_EXPORT
#define DLLTEST_API __declspec(dllexport)
#else
#define DLLTEST_API __declspec(dllimport)
#endif
并在dll工程配置(C++/Proprecessor definitions)中,定义宏DLLTEST_EXPORT
注:如果选择win32 dll,向导会自动添加并定义对应的宏。