1

我有一个已为 Interop 注册的 VB.NET 程序集。我在我的 VB6 项目中使用这个程序集中的一个类。

在现有的 VB6 项目中,我添加了对类型库的引用并运行以下代码:

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

第二行错误“运行时错误 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 互操作程序集( Vizual_Data)。

在失败的 VB6 应用程序中,它引用了这两个,但我的新应用程序只引用了Vizual_Data. 重新编译Vizual_Lib解决了这个问题。

Vizual_Data这是一个奇怪的错误,当使用该类而不是其他类时发生故障Vizual_Lib

于 2013-11-12T12:10:03.927 回答