使用 CreateObject ActiveX 组件无法创建带有注册类库的对象

Posted

技术标签:

【中文标题】使用 CreateObject ActiveX 组件无法创建带有注册类库的对象【英文标题】:Using CreateObject ActiveX component can't create object w/ Registered Class Library 【发布时间】:2014-07-16 14:49:25 【问题描述】:

我在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

解决方案

我又查看了注册表,发现了一个名为

的 Guid
CoreClassInterface

当我使用代码时,它引用了该库

CreateObject("CoreClassInterface")

vb6 程序有效。

对于以后遇到这篇文章的人来说,这是因为我在 vb.net 类中设置了 ProgID,当时我使用 Com Interop 的接口设置类。

<Guid("7EB55A33-34E7-4FC4-A87B-41635EEAF32D"), ClassInterface(ClassInterfaceType.None), ProgId("CommClassInterface")> Public Class CoreClass : Implements _CoreClassInterface

删除类的 ProgID 并在我的计算机上重建/注册库后,我发现

Advantage.Dealer.Email.CoreClassLibrary.CoreClass

在注册表中,我的 vb6 应用程序正常工作。

感谢您的帮助tcarvin

【问题讨论】:

import vb.net class library to vb6 project的可能重复 并非如此,即使在变暗时,该帖子的 OP 也会出现完全不同的错误。当我尝试使用“CreateObject”做同样的事情时,我可以成功地创建类的暗淡 您应该在 HKCR\CLSID 下找到 GUID,并且在该 GUID 下您应该看到 InprocServer、ProgId 等的其他键。同样,您的 ProgId(由 CreateObject 使用)应该在 HKCR 中并且应该指向 GUID。 【参考方案1】:

我发现在创建 .NET 库以供 VB6 使用时,最好将 COM 可见类的命名空间保持在一层深度以避免下划线。无论如何,您是否尝试过使用:

CreateObject("Advantage_Dealer_Email_CoreClassLibrary.CoreClass")

当所有其他方法都失败时,答案就在您的注册表中。使用 regedit 并查看下面列出的组件。

【讨论】:

我尝试过使用 CreateObject("Advantage_Dealer_Email_CoreClassLibrary.CoreClass") 得到相同的结果我也不完全确定我在注册表中寻找什么,你有一个例子吗? 在 HKEY_CLASSES_ROOT 中搜索 CoreClass。您通常会以 ProjectName.ClassName 或 PackageName.Classname 格式看到它。当您使用CreateObject 时,它会在注册表中进行查找。如果您找到它,请将详细信息发布到您的问题中并进行编辑,以便我们进行审核。 您在 com-visible 类中的 ClassInterface 属性中使用了什么? 您是否尝试通过 ProgId 属性显式设置您的编程 ID?尝试不带点“。”的命名空间和程序集名称。在里面,注册它,然后通过regedit重复搜索,看看你是否有更多的成功。

以上是关于使用 CreateObject ActiveX 组件无法创建带有注册类库的对象的主要内容,如果未能解决你的问题,请参考以下文章

错误 429 excel vba activex CreateObject(“SAP.Functions”)

无法在发明者 API 中创建 ActiveX 组件

带重定向的chilkat ActiveX HTTP组件的问题

无法在 Windows 7 x64 上使用 VB 脚本中的 CreateObject

vb.net中怎么使用createobject添加类呢,就好像vb中一样

发布模式下无法为 COM 组件创建 ActiveX 组件(VS2010 特定)