質問

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

ありがとう

役に立ちましたか?

解決

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

マネージC ++クラスのトリックが機能しない場合は、COMを使用することもできます。ソートのファクトリをC#プロジェクトにCOMオブジェクトとして登録することができます。次のインターフェイスを指定するとします

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

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

他のヒント

「regasm」で登録する必要があります; " regsvr32"の代わりに。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top