在控制台环境下调用MFC DLL崩溃的问题小结

来源:互联网 发布:javascript犀牛书pdf 编辑:程序博客网 时间:2024/05/18 03:30

    使用MFC编写的DLL在MFC的程序中调用是没有任何问题的,但是如果在控制台环境下调用会出现崩溃的情况。解决方法如下,在MFC编写的DLL中添加下面一段代码,即可解决该问题:

static AFX_MODULE_STATE * g_MoudleState = NULL;    //定义一个AFX_MODULE_STATE指针class CDLLApp : public CWinApp{public:    CDLLApp()    {    }    virtual BOOL InitInstance()    {        CWinApp::InitInstance();        g_MoudleState = AfxGetModuleState();    //获取MODULE_STATE                return TRUE;    }    DECLARE_MESSAGE_MAP()};BEGIN_MESSAGE_MAP(CDLLApp, CWinApp)END_MESSAGE_MAP()
CDLLApp theApp;//导出函数BOOL ShowAlgoDialog(string strDlgName){    AfxSetModuleState(g_MoudleState); //在导出函数开始添加此行代码    CDialog * pDlg = (ClassMap::forName(strDlgName));    if(pDlg == NULL)        return FALSE;    else        pDlg->DoModal();    return TRUE;}
在控制台中调用代码:
void main(){    string strClassName = "CRasterTransformDlg";    ShowAlgoDialog(strClassName);}

显示的结果

image

 
原创粉丝点击