0

私はVB.NET 2010でCOM DLLを書いています(DLL Aと呼びましょう)。この DLL は、既存の DLL (DLL B) の関数を使用します。VS2010 でテスト アプリからコードを実行すると、すべてうまくいきます。

(アプリのテスト) --> (DLL A) --> (DLL B)

ここで、実際の APP (VB6) で DLL A への参照を追加します。

(実際のアプリ) --> (DLL A) --> (DLL B)

...そして、このエラーが発生します

タイプ 'System.__ComObject' の COM オブジェクトをインターフェイス typ 'Object.class' にキャストできません。IID '{GUID}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーのために失敗したため、この操作は失敗しました: そのようなインターフェイスはサポートされていません (HRESULT からの例外: 0x80004002 (E_NOINTERFACE))。

DLL A は初期化されますが、DLL B への参照を使用して関数を呼び出すとすぐにエラーが発生します。

ヘルプ!

4

1 に答える 1

1

.NET DLL をデプロイして COM(VB6) で使用する場合は、「RegASM」を使用してアセンブリに登録する必要があります。GAC フォルダー以外を登録する場合は、/codebase スイッチを含める必要があります。

/codebase スイッチを使用する場合は、厳密な名前のアセンブリである必要があります。

于 2012-04-19T17:24:54.833 に答える