以下のコードを使用してネイティブC++コードでICollectionインターフェイスポインタを作成しようとしています。ネイティブC++コードでICollectionインターフェイスを使用する
ICollectionPtr ptrPopItems (__uuidof(mscorlib::ICollection));
しかし、「クラスが登録されていません」というエラーが表示されています。 誰かがこのエラーを解決するのに役立つことができますか?
以下のコードを使用してネイティブC++コードでICollectionインターフェイスポインタを作成しようとしています。ネイティブC++コードでICollectionインターフェイスを使用する
ICollectionPtr ptrPopItems (__uuidof(mscorlib::ICollection));
しかし、「クラスが登録されていません」というエラーが表示されています。 誰かがこのエラーを解決するのに役立つことができますか?
ICollectionはCOMオブジェクトではありません。これは、動作するために必要なものです。
ICollection^ ptrPopItems = gcnew ArrayList();
ICollectionはインターフェイスなので、インターフェイスを実装する具象クラスのインスタンスに設定する必要があります。 ^
は管理対象オブジェクトへのポインタであり、gcnew
は管理対象オブジェクトnew
を呼び出してオブジェクトを作成します。あなたがマネージ拡張せずにC++を使用する必要がある場合は、あなたがC#でクラスを作成する必要があります:
は
http://en.wikipedia.org/wiki/C%2B%2B/CLI
EDITより多くを学ぶためにWikipediaで、このC++/CLIのページを見てみましょう何をしたいのかを尋ねるクラスにComVisible
属性を追加します。
.Iはそれが解決したが、私は、 – viky
こんにちは、 を別の同様の問題に直面していました私は、コードの以下の部分を使用してIDictonaryのインスタンスを作成し、IDictonary-を利用するようにしようとしていますありがとう>メソッドを追加します。しかし、CoCreateInstanceインスタンスは、登録されていないクラスのエラーで失敗しています。レジストリをチェックすると、CLSIDは使用できません。何が問題なのかを教えてください。 \t IDictionary * pDictionary; HRESULT hr = S_OK; 場合(FAILED(HR =のCoCreateInstance(CLSID_Dictionary、NULL、 CLSCTX_INPROC_SERVER、IID_IDictionary、(無効**)(&pDictionary)))) – viky
CLSID_Dictionaryある{EE09B103-97E0-11CF-978F-00A02463E06F} - HKEY_CLASSES_ROOTの下であなたのレジストリをチェック\ CLSID \ {EE09B103-97E0-11CF-978F-00A02463E06F}が登録されているかどうか確認してください。そうでない場合は、Windows Scripting Hostが正しくインストールされていないか、またはWindows Scripting Hostにアクセスできない可能性があります。 –