3

そのため、私は ActiveX と C# をいじり、それらがどのように連携するかを考えています。問題は、言及されたエラーで最初に壁にぶつかったことです。私が従った手順:

VS2010 では、MFC ActiveX コントロール プロジェクトを選択しました。次に、「SHORT Multiply( SHORT a, SHORT b);」というメソッドを追加しました。ソリューション エクスプローラーで ProjectnameLib の下の _DProjectname を右クリックすると表示されるメニューの [メソッドの追加] オプションをクリックします。メソッドのコードは次のとおりです。

    SHORT CSampleProgramActivex01Ctrl::Multiply(SHORT a, SHORT b)
    {
      AFX_MANAGE_STATE(AfxGetStaticModuleState());

     // TODO: Add your dispatch handler code here

     return ( a * b);
    }

生成された COM ファイルを参照する単純な C# コンソール アプリケーションを作成しましたが、このメソッドを使用しようとすると、アプリケーションが上記のエラーで停止します。インターネットでエラーを検索しましたが、明確な解決策は言及されていません。どんな助けでも感謝します。説明が必要な場合は、お知らせください。

4

2 に答える 2

3

これが問題の解決と見なされるかどうかはわかりませんが、回避策を見つけました。

まず、C# コンソール アプリケーションの代わりに、C# Windows フォーム アプリケーションを作成しました。フォームを作成した後、ocx 全体をコンポーネントとしてツールボックスに追加しました。これを行うには、ツールボックス メニューのツールボックス タイプを右クリックします。新しいメニューで、[Choose Items] をクリックします。これにより新しいメニューがポップアップし、その中でCOMタブを選択し、COMコンポーネントをチェックすると、COMコンポーネントがツールボックスメニューに追加されます。コンポーネントをメニューにドラッグ アンド ドロップすると、準備完了です。

これは、誰もが従う回避策のようです。きれいではありませんが、それが私が思う標準です。

于 2012-07-03T13:01:40.543 に答える
1

こちらをご覧ください: Visual C++ で OLE コントロールをオートメーション サーバーとして使用する方法 http://support.microsoft.com/kb/146120/en-us

于 2012-10-22T02:33:06.960 に答える