我在动态链接库中定义了一个自定义类CForm (该类在EXE程序中也有创建),并在CFormInforDll.h文件中定义了该类的变量m_fmForm
protected:
CForm m_fmForm;
在BOOL CFormInforDll::InitInstance()对m_fmForm进行初始化。
为什么在接口函数extern "C++" __declspec(dllexport) CForm GetFomInfor(void) 中使用该变量会提示“m_fmForm”: 未声明的标识符。
另外还有两个疑问:
1、如果我在BOOL CFormInforDll::InitInstance()对m_fmForm进行赋值,那么调用接口函数 GetFomInfor(void)所取得的m_fmForm是否是已经赋过值的变量?
2、这种返回自定义类型的DLL,是否是需要创建扩展的MFC动态链接库?
你的建工程是用的MFC扩展DLL么?
要用CXXX系列的类都需要扩展DLL的
另外extern "C++" 真的有这种??我怎么只见过extern “C”啊
我生成的是常规MFC动态链接库(非扩展)。CFormInforDll(不好意思,我发帖子的时候写错了,应该是CCreatFormDllApp类)是自动生成的APP类,不是我自己需要导出的类,我需要导出的是这个功能:CForm GetFomInfor(void)。代码如下:
[code=C/C++][/code]class CCreatFormDllApp : public CWinApp
{
public:
CCreatFormDllApp();
// 重写
public:
virtual BOOL InitInstance();
protected:
static CForm m_fmForm;
DECLARE_MESSAGE_MAP()
};
cpp
extern "C++" __declspec(dllexport) CForm GetFomInfor(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); //切换到dll的HINSTANCE\
return m_fmForm;
}
其中CForm是我自己写的一个类
提示:“m_fmForm”: 未声明的标识符
GetFomInfor不是CCreatFormDllApp 的成员函数,怎么能够用CCreatFormDllApp的成员变量?