4

私は最近、C# ソリューションの 1 つを VS2008 から vs 2010 に更新して、組み込みの相互運用型機能を利用しました。これにより、従来の VB6 コードベースとの相互作用のために現在必要な相互運用のライブラリの出荷を停止できます。

何らかの理由で、ソリューションをコンパイルすると次のメッセージが表示されます。

タイプ ライブラリ インポーターは、IUnknown から派生していないインターフェイスを検出しました: '_HiddenInterface'

私は周りを検索しましたが、これまでのところ、「無視しても害はありません」と「VB6コードがいくつかのルールに違反していることを意味します」という2ビットの情報しか見つかりませんでした。VB コードベースは私たちのものであり、コンパイル時に警告が 0 であることをお勧めします。これらの警告の原因を修正したいと思います。

私は途方に暮れているので、アドバイスは素晴らしいです。

4

2 に答える 2

2

VB コレクション オブジェクトを返すパブリック メソッドを持つクラスを含む COM ライブラリへの参照がある場合、コンパイラの警告が表示されます。

_HiddenInterface インターフェイスは、MSVBVM60.DLL に含まれています。これを確認するには、OLE ビューを開き、[タイプ ライブラリ] > [ Visual Basic for Applications (Ver 6.0) ] に移動します。typelib をダブルクリックして、ITypeLib ビューアー ウィンドウを表示します。一覧でご覧いただけますinterface _HiddenInterface

これらの関数によって返されたコレクションを使用できるはずですが、Microsoft KB 記事BUG: Visual Basic 6.0 コンポーネントから Visual Basic にコレクション オブジェクトを渡そうとするとエラー メッセージが表示されるに記載されているように、.NET でコレクションのインスタンスを作成することはできません。 Basic 2005 または Visual Basic .NET: "System.InvalidCastException" .

于 2013-12-10T04:28:19.780 に答える