1

Xで定義されていると思われる欠落している COM インターフェイスを探していますY.dll。を使用して、この推定インターフェイスをのぞくことができます

grep X Y.dll

それは「一致する」と言います。万歳、疑惑確定!

残念ながら、Visual Studio Express でオブジェクト ブラウザーを使用Y.dllしてカスタム コンポーネント セットに追加しようとすると、ポップアップ ウィンドウに "一部のコンポーネントを参照できませんでした" というエラーが表示されます。

では、この dll を参照できない理由は何ですか? COM インターフェイスを故意または偶発的に保護、非表示、保護、または不明瞭にすることはできますか? 明らかにプライマーが必要です!

公式には、Microsoft がこれについて知っていることは、一般的に洞察力を欠いているようです。

このエラーは通常、[コンポーネント セレクタ] ダイアログ ボックスで、.htm ファイルや .txt ファイルなど、オブジェクトの参照をサポートしていないファイル タイプを追加しようとしたときに発生します。オブジェクト ブラウザは、.bsc、.olb、.tlb、.dll、.exe、.ocx などのファイル タイプをサポートしています。

真剣に、dll または exe がオブジェクトの参照をサポートしない理由は何ですか? チュートリアルや本へのポインタは、この初心者に感謝します! ありがとう。

4

1 に答える 1

2

COM オブジェクト ブラウザーは、COM サーバー (dll、exe、ocx など) によってエクスポートされたメタデータ (タイプ ライブラリ)に依存しています。

問題は、COM サーバーが実装するインターフェイスに関するメタデータをエクスポートする必要がないことです。残念ながら、私はそのようなサーバーをかなりの数見つけました (そのため、どの CoClasses、Interfaces などが他の方法でサポートされているかを知る必要があります)。

COM サーバー (y.dll) に次のような「TYPELIB」というリソースが含まれているかどうかを確認します。

COM typelib リソース

お役に立てれば。

于 2012-12-16T16:03:08.567 に答える