Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如果调用dllimport函数,则MFC在加载时挂起_C++_Visual Studio 2008_Dll_Mfc_Loading - Fatal编程技术网

C++ 如果调用dllimport函数,则MFC在加载时挂起

C++ 如果调用dllimport函数,则MFC在加载时挂起,c++,visual-studio-2008,dll,mfc,loading,C++,Visual Studio 2008,Dll,Mfc,Loading,我有一个MFC应用程序“Analyzer”,它使用带有资源的Dll 有一个函数用于获取dll中包含的对话框实例,名为GetCriteriaDlg 我的dll文件: 我的AnalyzerDoc.cpp,其中我使用了以下功能: dll中还有一个类eported class AFX_EXT_CLASS CCriteriaDlg : public CDialog 并且它们与AnalyzerDoc.cpp中包含的导出类头文件完全相同,名称为DllImports.h AnalyzerDoc.cpp有一个映

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

有一个函数用于获取dll中包含的对话框实例,名为GetCriteriaDlg

我的dll文件:

我的AnalyzerDoc.cpp,其中我使用了以下功能:

dll中还有一个类eported

class AFX_EXT_CLASS CCriteriaDlg : public CDialog
并且它们与AnalyzerDoc.cpp中包含的导出类头文件完全相同,名称为DllImports.h

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

Void CAnalyserDoc::OnAnalyseRun()
{
    // TODO: Add your command handler code here
    CCriteriaDlg *dlg=GetCriteriaDlg();
    dlg->DoModal();
}
现在这里是它变得更加脆弱的地方。如果我一切正常,程序将启动,但MFC的常规SD窗口从未出现,我必须从任务管理器结束进程

但是如果我要注释掉
OnAnalyseRun()
的内容,那么窗口加载很好(但是很明显,他们在方法调用上没有任何动作,我尝试交换东西,如果我只声明*dlg而没有方法调用,那么窗口加载很好,所以我认为这肯定与
GetCriteriaDlg()有关)


为什么会发生这种情况?

但是你没有在没有调用
DoModal
的情况下调用
GetCriteriaDlg
,是吗?是的,我也试过了,添加DoModal位是最近添加的。你试过调试这个程序吗?我想GetCriteriaDlg会返回一个指向未正确初始化的对话框的指针。好的,现在就把它擦掉即使删除了“OnAnalyseRun”中的所有代码,即使程序正在运行,文档窗口仍然不会出现。
class AFX_EXT_CLASS CCriteriaDlg : public CDialog
Void CAnalyserDoc::OnAnalyseRun()
{
    // TODO: Add your command handler code here
    CCriteriaDlg *dlg=GetCriteriaDlg();
    dlg->DoModal();
}