1

Interop 用に登録した VB.NET アセンブリがあります。VB6 プロジェクトでこのアセンブリのクラスを使用しています。

既存の VB6 プロジェクトで、タイプ ライブラリへの参照を追加し、次のコードを実行しました。

Dim vizDataSingleton As Vizual_Data.Singleton
Set vizDataSingleton = New Vizual_Data.Singleton

2 行目のエラー「実行時エラー 430: クラスはオートメーションをサポートしていないか、予期されるインターフェイスをサポートしていません」

ただし、空の VB6 プロジェクトを開始して参照を追加すると、まったく同じコードが正常に機能します。

vbp ファイルの tlb への参照を確認しましたが、どちらも同一です。

Reference=*\G{BDB20DDF-D3B7-4484-8950-35D67DED45EC}#4.2#0#..\Vizual.Data\Vizual.Data\bin\Debug\Vizual.Data.tlb#VMS Data Structure Library

私も遅延バインディングを使用してみました:

Set vizDataSingleton = CreateObject("Vizual.Data.Singleton")

「タイプの不一致」を伴う既存のプロジェクトではこのエラーが発生しますが、新しいプロジェクトでは再び機能します

あるプロジェクトでは失敗するが、別のプロジェクトでは機能する理由はありますか?

4

1 に答える 1

0

最後に、このエラーの原因を見つけました。

Vizual_Lib元の .NET アセンブリ ( ) に依存する別の .NET Interop アセンブリ ( ) がありましたVizual_Data

失敗した VB6 アプリケーションでは、これらの両方を参照していましたが、私の新しいアプリケーションはVizual_Data. 再コンパイルVizual_Libすると問題が解決しました。

これは奇妙なエラーでVizual_Data、他のクラスではなくそのクラスを使用したときに失敗しましたVizual_Lib

于 2013-11-12T12:10:03.927 に答える