私はVB6の開発を行っていますが、これはより広い問題だと思います。VB IDEで、[BadImplementsRefInCompatLib]というエラーが発生することがあります。MattCurlandの「AdvancedVisualBasic6」に付属しているタイプライブラリビューアを使用すると、コンポーネント内のタイプライブラリに、見つからないタイプライブラリへの参照があるが、それが何であるかはないというフラグが立てられます。根本的なエラーは、TLIコンポーネントが、別のタイプライブラリで定義されているインターフェイスを見つけようとしたときに発生します。
IDLを逆コンパイルするためにOLEViewも試しましたが、誤った値を特定せずに、外部タイプを取得しようとするとエラーメッセージが表示されました。
実際のエラーを、コンポーネントを指すレジストリ内のタイプライブラリ参照までさかのぼりましたが、メジャーバージョンが正しくありませんでした。メジャーバージョンを置き換えると、問題が修正されました。
バイナリエディタを使用して、タイプライブラリで使用されている情報を特定できるかどうかを確認しました。実際、参照しているコンポーネントの名前(パスなし)は見つかりましたが、形式を理解できませんでした。私は実際に、タイプライブラリGUIDとバージョン番号のテーブルを見つけたいと思っていました。これらの名前を抽出し、「機能する」参照を削除するコードを記述できると思いますが、これは少し大雑把です。
タイプライブラリが外部タイプを参照する方法を知っている人はいますか?