2

アンマネージ C++ コードの COM オブジェクトに使用している C# ライブラリがあります。Visual Studio の [Register For Com Interop] チェックボックスを使用してライブラリを登録し、ComVisible を true に設定しました。

tlb を C++ アプリにインポートしました.....実行すると、「クラスが登録されていません」というメッセージが表示されます....

これは以前は機能していましたが、C# プロジェクトのディレクトリを別の場所に移動した後に発生し始めました....はい、移動した後にライブラリを再登録しました。

レジストリからすべての参照を削除しました... gacutil.exe /i を実行してみました...サイコロはありません。

誰でもこれを修正する方法を知っていますか?

4

2 に答える 2

0

管理対象オブジェクトに明示的な CLSID が設定されていない場合は、移動と再構築によって新しい CLSID が生成された可能性があります。アンマネージ プロジェクトに typelib の古いコピーがないことを確認してください。

HKCR\CLSID\{XXXX} に移動し、マネージド オブジェクトのクラス登録が正しいマネージド DLL を指していることを確認します。

于 2009-09-09T18:07:27.153 に答える
0

マネージ コードでアンマネージ オブジェクトを使用するより良い方法は、C++ / CLI を使用することです。ネイティブ オブジェクトのマネージド ラッパーを簡単に作成できます。

于 2009-09-09T18:07:51.833 に答える