如果你的DLL不使用MFC,那么使用Non-MFC Win32 DLL,不必要的连接MFC会导致磁盘空间和内存的浪费如果你的DLL需要使用MFC,并且DLL将来会被MFC或者非MFC程序调用,那么使用Regular DLL。动态链接的Regular DLL文件小,占用内存少,但是需要和MFCx0.DLL,MSVCRTx0.DLL一起发布;静态链接的Regular DLL文件大,而且可能占用额外的内存,因为他需要装入自己的MFC程序代码拷贝,还有一点需要考虑的就是静态链接的Regular DLL编译时间要长许多。
Regular DLL使用"C"接口,可以使用MFC的类如果你的DLL需要使用MFC,并且只会被MFC程序调用,你可以选择Regular DLL或者Extension DLL。如果你的DLL实现可重用的MFC派生类,或者你需要在MFC程序和DLL之间传递MFC派生对象,你必须使用Extension DLL。
Extension使用C++/MFC类接口,Regular DLL也可以输出类,方法是输出头文件中包含类的头部定义,需要输出的类的成员函数用同样的方法声明,定义,例如:
void FAR PASCAL EXPORT myclass::myfunc(void) { 函数代码; }
然后在DEF文件中添加EXPORT函数类似下列代码:
?myfunc@myclass@@QAGXXZ @4 NONAME
取得函数名称的方法是使用Map文件
Regular DLL使用"C"接口,可以使用MFC的类如果你的DLL需要使用MFC,并且只会被MFC程序调用,你可以选择Regular DLL或者Extension DLL。如果你的DLL实现可重用的MFC派生类,或者你需要在MFC程序和DLL之间传递MFC派生对象,你必须使用Extension DLL。
Extension使用C++/MFC类接口,Regular DLL也可以输出类,方法是输出头文件中包含类的头部定义,需要输出的类的成员函数用同样的方法声明,定义,例如:
void FAR PASCAL EXPORT myclass::myfunc(void) { 函数代码; }
然后在DEF文件中添加EXPORT函数类似下列代码:
?myfunc@myclass@@QAGXXZ @4 NONAME
取得函数名称的方法是使用Map文件
使用 Regular DLL 怎么接收系统传过来的 INSTANCE 呀,在哪初始化?
别的在 DLL_PROCESS_ATTACH 中处理,不知这如何用?
谢谢!