0

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

{ 断言(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) 构建的。它与此有关吗?请帮我。

谢谢。

4

2 回答 2

0

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

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

于 2012-07-19T09:27:54.480 回答
0

我有同样的问题。我通过添加一个调用来修复它:

AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0))

在我开始调用 MFC 函数和对象(如 CWaitCursor)之前。该函数通常在 WinMain() 中调用。

于 2022-01-22T02:47:25.297 回答