怎样将一个类封装在dll里?
解决方案 »
- MySQL忘记密码了怎么办????
- 给对话框换图标的问题
- 生成一个背景透明的dc的问题?
- 请问CImageList CREATE函数ILC_MASK作用
- 我想学习网络编程,请高人指点,小弟先谢了!(一小时结帖,在线等)
- 如何用vc程序控制一个自建文件夹得属性
- 如何排列dialog中按tab键切换不同edit的顺序?(急)
- 我这段代码为什么在窗体改变大小时控件就看不到了
- 如何象windows查找文件一样,边查找边有放大镜动画出现?
- VC 怎样用代码实现鼠标右击状态栏显示菜单
- 有难度的问题,可另加分?在线等.......
- 在建立Win32 Application 出现的两个错误信息,再现等待,解决后马上结帖
例如,在一个C++文件中,有如下函数:
extern "C" {void __declspec(dllexport) __cdecl Test(int var);}
其输出函数名为:Test
MFC提供了一些宏,就有这样的作用。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_CLASS这样的宏,如果用于DLL应用程序的实现中,则表示输出(因为_AFX_EXT被定义,通常是在编译器的标识参数中指定该选项/D_AFX_EXT);如果用于使用DLL的应用程序中,则表示输入(_AFX_EXT没有定义)。 要输出整个的类,对类使用_declspec(_dllexpot);要输出类的成员函数,则对该函数使用_declspec(_dllexport)。如:class AFX_EXT_CLASS CTextDoc : public CDocument
{
…
}extern "C" AFX_EXT_API void WINAPI InitMYDLL(); 这几种方法中,最好采用第三种,方便好用;其次是第一种,如果按顺序号输出,调用效率会高些;最次是第二种。