我有一个 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.DataVizual.DatabinDebugVizual.Data.tlb#VMS Data Structure Library
我也尝试使用后期绑定:
Set vizDataSingleton = CreateObject("Vizual.Data.Singleton")
此错误在现有项目中出现"类型不匹配",但在新项目中再次有效
任何想法为什么这在一个项目中失败但在另一个项目中有效?
我最终找到了此错误的原因。
我有另一个依赖于原始.NET程序集(Vizual_Data
)的.NET Interop程序集(Vizual_Lib
)。
在失败的 VB6 应用程序中,它引用了这两个,但我的新应用程序只引用了Vizual_Data
。重新编译Vizual_Lib
解决了这个问题。
这是一个奇怪的错误,即使用 Vizual_Data
类而不是其他 Vizual_Lib
类时发生故障。