1

EXE によって公開された COM 関数を使用しようとしています。Visual Studio 2010 (windows7/x64 マシン上) を使用して C# プロジェクトを作成し、その EXE への参照を追加してから、Isolated フラグを true に設定しました。ソリューションをビルドすると、公開するクラスごとにエラーが発生します。

COM 参照 'FNCClient11Lib' を分離する際の問題: レジストリ キー 'HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID{e49b30c9-6d7e-48f5-91da-f2f0414c6a13}\InProcServer32' に値 '(Default)' がありません。

これらのエントリはレジストリのその場所には存在しませんが、ここには存在します (以下)。

HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID{E49B30C9-6D7E-48F5-91DA-F2F0414C6A13}

  • ビルド時にこれをレジストリの正しい場所に向ける方法はありますか?
  • EXE を参照できますか? これまで見てきたすべての例は、DLL のみを参照しています。
4

1 に答える 1

1

この問題は、COM インターフェイスで「作成不可」とマークされているクラスがタイプ ライブラリに含まれている場合に発生します。これを確認するには、OLE/COM ビューアを (管理者として) 使用し、問題の原因となっているタイプ ライブラリに移動して開き、CoClass 定義を検索します。報告された uuid を使用するものが「作成不可」と宣言されている場合は、それを取得しています。また、VS オブジェクト ブラウザーでは、これらのクラスはインターフェイスでコンストラクターを公開しません。

私の解決策は、これらのクラスの public コンストラクターを使用して COM コンポーネントを再構築することでしたが、もちろん、これはソースがある場合にのみ可能です。

最後に、この症状には他の理由があるかもしれませんが...

于 2014-07-24T17:41:33.553 に答える