断言afxcurrentinstancehandle null从exe调用MFC dll

时间:2012-07-17 03:50:59

标签: visual-studio-2008 visual-c++ mfc visual-studio-debugging vtk

我有一个MFC应用程序,我从exe调用mfc dll(vtkMFC.dll)。我在afxwin1.inl中收到如下调试断言。

  

{ASSERT(afxCurrentInstanceHandle!= NULL);

我尝试使用AfxSetResourceHandle(GetModuleHandle("vtkMFC.dll"))但仍然遇到同样的错误。 我正在使用"use MFC in a static library"选项。 以下是我的代码:

    AFX_MANAGE_STATE(AfxGetStaticModuleState())
    CWaitCursor WC; // sometimes takes a while to start
    CCCADApp *app = (CCCADApp *)AfxGetApp();
    CFrameWnd *frame = app->pVtkTemplate->CreateNewFrame( this, NULL );
    // first init creates the view 
    app->pVtkTemplate->InitialUpdateFrame( frame, this, FALSE);
    CvtkMDIView* view= dynamic_cast<CvtkMDIView*>(frame->GetActiveView()); 
    //
    // automatic correction - try to load initial field if solution is not available
    if(run->GetStatus()==CDawesRun::NOTRUN) options=VTKInitialField|VTKGrid|(options & VTKView2D);
    if(view) view->setData(run,options,variable); // set data
    // show the view and frame
    app->pVtkTemplate->InitialUpdateFrame( frame, this, TRUE);

我的主应用程序是使用“多线程调试(/ MTd)”选项构建的,其中dll是使用多线程调试DLL(/ MDd)构建的。 它与此有关吗? 请帮帮我。

感谢。

1 个答案:

答案 0 :(得分:0)

为什么要静态链接MFC / CRT?我不确定MFC,但我认为不支持在应用程序的不同模块中静态/动态地链接CRT。

您可以尝试使用/ MDd,动态构建到MFC,并说它是否有帮助?