我有一个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)构建的。 它与此有关吗? 请帮帮我。
感谢。
答案 0 :(得分:0)
为什么要静态链接MFC / CRT?我不确定MFC,但我认为不支持在应用程序的不同模块中静态/动态地链接CRT。
您可以尝试使用/ MDd,和动态构建到MFC,并说它是否有帮助?