1

アンマネージ C++ DLL からインスタンス化する必要があるダイアログを C# で作成するように言われました。コード内の別の場所でこれを行うには、マネージド c++ クラスを C++ プロジェクトに追加し、マネージド c++ クラスから C# dll を呼び出すだけです。しかし、私がしなければならないところから、それは私にはうまくいかないことがわかりました。c++ dll は MFCActiveX プロジェクトだからだと思います。このプロジェクトの任意のファイルに clr を設定するとすぐに、正しく登録されなくなります。登録しようとすると、3 つのエラーが表示され、登録されたというメッセージが表示されます。ただし、使用しようとすると、0x80040111「ClassFactory は要求されたクラスを提供できません」というエラーが表示されます。ここで問題が何であるかを誰かが知っているなら、私はそれを大いに感謝します. 私はこれを達成できる必要があるか (推奨)、それが不可能であることを証明する必要があります。

ありがとう

4

2 に答える 2

0

MFCActiveX プロジェクトによって、この方法で C# クラスを作成することが妨げられることがわかりません。マネージ クラスの追加が許可されない場合を除きます。

マネージ C++ クラスのトリックが機能しない場合は、COM を使用するという別のオプションがあります。C# プロジェクトにある種のファクトリを COM オブジェクトとして登録することができます。次のインターフェースを与えるとしましょう

[ComVisible(true)]
[Guid("babe87fc-1467-4913-a1d3-47eeedf1afb5")]
public interface IDialogFactory {
  void Create(); 
}

また、バッキング クラスも作成する必要があります。ただし、マネージ アセンブリを登録し、COM を使用してアクセスすることができます。

于 2009-03-03T13:22:15.420 に答える