2009-03-03 14 views
1

アンマネージC++ dllからインスタンス化する必要があるダイアログをC#で作成するように指示されました。私たちは、管理されたC++クラスをC++プロジェクトに追加した後、管理されたC++クラスからC#dllを呼び出して、コード内の他の場所でこれを行います。しかし私はそれが私がそれをやらなければならないところからはうまくいかないことを発見しています。私は、C + +のDLLはMFCActiveXプロジェクトだと思います。このプロジェクトのファイルにclrを設定すると、すぐに正しく登録されなくなります。私はそれを登録しようとすると、私は3つのエラー、次にそれが登録されたメッセージを取得します。しかし、私はそれを使用しようとすると、私は0x80040111 "ClassFactoryは、要求されたクラスを提供することはできません"エラーが発生します。 誰かが問題が何であるか分かっていれば、私はそれを高く評価します。私はこれを達成できる(望ましい)か、それが不可能であることを証明する必要があります。あなたは今、代わりに "します。regsvr32" の "ます。regasm" に登録する必要がありアンマネージC++ mfcアクティブx dllからC#ダイアログを起動

おかげ

答えて

0

このようにMFCActiveXプロジェクトがどのようにC#クラスを作成できないのか分かりません。管理されたクラスを追加することができない場合を除きます。

管理対象のC++クラスのトリックが機能しない場合は、COMを使用することもできます。 COMオブジェクトとしてC#プロジェクトにソートファクトリを登録することは可能です。また、同様のバッキングクラスを作成する必要があると思い、それを次のインターフェイス

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

を与えると言います。しかし、次にマネージドアセンブリを登録し、COMを使用してそれにアクセスすることができます。

+0

ありがとう、私は今、その方法を使用して作業しています。とても助かりました。 –

0

関連する問題