0

exeからmfc dll(vtkMFC.dll)を呼び出すMFCアプリがあります。そこで、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);

私のメインアプリは、DLLがマルチスレッドデバッグDLL(/ MDd)でビルドされる「マルチスレッドデバッグ(/ MTd)」オプションでビルドされています。これと何か関係がありますか?私を助けてください。

ありがとう。

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 に答える