2

MFC(主に)とCOMを使用して構築されたこの巨大なC++アプリケーションがあります。いくつかのライブラリにリンクし、多くの科学計算を行います。そこで、新しい機能をいくつか追加したいと考えており、組織のポリシーとして、.NET を使用してすべての新しいものを開発しています。したがって、この新しい UI 機能は WPF を使用して構築され、この既存の C++ アプリケーションで使用されます。

私は C++ アプリケーションで WPF コントロールを使用する方法を知っているので、それは問題ではありません。問題は、このプロジェクトで CLR を有効にしようとすると、リンク段階でリンクを実行して混合モードの実行可能ファイルを生成するのに長い時間 (約 10 分) かかることです。最終的に、実行可能ファイルの作成に成功します。しかし問題は、この実行可能ファイルを起動するたびにクラッシュすることです。InitInstance をデバッグしようとしましたが、この前のどこかでクラッシュします。私は次に何をしようか少し困惑しています。

これの原因は何か考えている人はいますか?

混合モード アセンブリのターゲット フレームワークは 4.0 であるため (そうあるべきです)、これは問題ではありません。

参考までに、ILDasm はこの exe の読み込みにも失敗します。多くの時間がかかり、エラーは発生しませんが、ロードされません。これは、どういうわけか管理されたイメージが適切に作成されていないという印象を与えます。

4

1 に答える 1

0

これが必要かどうかはわかりませんが、害はありません。新しいMFCプロジェクトでは、CWinAppから派生したクラスのコンストラクターに次のようになります。

#ifdef _MANAGED
    // If the application is built using Common Language Runtime support (/clr):
    //     1) This additional setting is needed for Restart Manager support to work properly.
    //     2) In your project, you must add a reference to System.Windows.Forms in order to build.
    System::Windows::Forms::Application::SetUnhandledExceptionMode(System::Windows::Forms::UnhandledExceptionMode::ThrowException);
#endif
于 2012-07-10T07:26:06.003 に答える