如果调用dllimport函数,MFC会在加载时挂起

时间:2012-09-06 11:45:55

标签: c++ visual-studio-2008 dll mfc loading

我有一个MFC应用程序,“Analyzer”,它使用带有资源的Dll。

有一个函数可以获取名为GetCriteriaDlg的dll中包含的Dialog实例。

我的dll文件:

extern "C" {__declspec(dllexport) CCriteriaDlg* GetCriteriaDlg(void );}

in the dll cpp file I have

    extern "C"
{
    __declspec(dllexport) CCriteriaDlg* GetCriteriaDlg(void )
    {
        return &dlg;
    }
}

My AnalyserDoc.cpp我在哪里使用函数:

extern "C" {__declspec(dllimport) CCriteriaDlg* GetCriteriaDlg(void );}

还有一个在dll中输入的类

class AFX_EXT_CLASS CCriteriaDlg : public CDialog

它们与名为 DllImports.h

AnalyserDoc.cpp 中包含的导出类头文件完全相同

AnalyserDoc.cpp 有一个映射到菜单项的函数

Void CAnalyserDoc::OnAnalyseRun()
{
    // TODO: Add your command handler code here
    CCriteriaDlg *dlg=GetCriteriaDlg();
    dlg->DoModal();
}

现在这里变得奇怪了。如果我拥有一切,那么程序启动但MFC的常用SD窗口永远不会出现,我必须从任务管理器结束进程。

但是,如果我要评论OnAnalyseRun()的内容,那么窗口加载正常(但显然他们对方法调用没有动作,我尝试交换周围的事情,如果我只声明* dlg该方法调用窗口加载正常,所以我认为它肯定与GetCriteriaDlg()

有关

为什么会这样?

0 个答案:

没有答案