我已经在visual basic.net中编写了一些类,并希望在visual basic 6应用程序中使用它们。
现在我已经在我的计算机上注册了tlb / dll文件,我可以在vb6中用
创建该类的实例Dim c As New Advantage_Dealer_Email_CoreClassLibrary.CoreClass
但是我想使用CreateObject(Class),但是当我尝试收到ActiveX错误时,这里是我正在使用的代码
Dim c As Object
Set c = CreateObject("Advantage.Dealer.Email.CoreClassLibrary.CoreClass")
这可能是我做错了吗?
由于
更新: 在搜索注册表后,我只能找到一个引用Advantage.Dealer.Email.CoreClassLibrary的CLSID。
{CFB8F7A1-BC6F-4771-839F-1343785ED9D6} > 1.0 > (Default) REG_SZ Advantage.Dealer.Email.CoreClassLibrary
解决方案
我在注册表中再看了一眼,发现了一个名为
的GuidCoreClassInterface
当我使用代码时引用了库
CreateObject("CoreClassInterface")
vb6计划有效。
对于今后遇到这篇文章的人来说,这是因为我在设置带有Com Interop接口的类时已经在vb.net类中设置了ProgID。
<Guid("7EB55A33-34E7-4FC4-A87B-41635EEAF32D"), ClassInterface(ClassInterfaceType.None), ProgId("CommClassInterface")> Public Class CoreClass : Implements _CoreClassInterface
删除该类的ProgID并在我的计算机上重建/注册该库后,我找到了
Advantage.Dealer.Email.CoreClassLibrary.CoreClass
在注册表中,我的vb6应用程序正常运行。
感谢您的帮助 tcarvin
答案 0 :(得分:0)
在创建供VB6使用的.NET库时,我发现最好将COM可见类的名称空间保持在一层深,以避免下划线。无论如何,您是否尝试过使用:
CreateObject("Advantage_Dealer_Email_CoreClassLibrary.CoreClass")
当其他所有方法都失败时,答案就在您的注册表中。使用regedit并查看下面列出的组件。