我在visual basic.net中编写了一些类,并希望在Visual Basic 6应用程序中使用它们。使用CreateObject ActiveX组件不能创建对象w /已注册类库
现在我已经注册了我的计算机上的TLB/dll文件,我能够与在VB6中创建一个类的实例
Dim c As New Advantage_Dealer_Email_CoreClassLibrary.CoreClass
不过,我想使用CreateObject(类),但是当我尝试我得到的ActiveX错误,这里是我使用该
Dim c As Object
Set c = CreateObject("Advantage.Dealer.Email.CoreClassLibrary.CoreClass")
代码这是可能的我究竟做错了什么?
感谢
更新: 通过注册表搜索后,我只能够找到一个CLSID它引用Advantage.Dealer.Email.CoreClassLibrary。
{CFB8F7A1-BC6F-4771-839F-1343785ED9D6} > 1.0 > (Default) REG_SZ Advantage.Dealer.Email.CoreClassLibrary
解决方案
我在注册表再看看,发现一个GUID称为
CoreClassInterface
其中引用的库,当我使用的代码
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
可能重复的[import vb.net class library to vb6 project](http://stackoverflow.com/questions/8562819/import-vb-net-class-library-to-vb6-project) – Plutonix
不是真的,即使在调光时,该帖子的OP也得到了完全不同的错误。当我尝试使用'CreateObject'执行相同操作时,我可以成功创建它的类的昏暗。 – richardmountain
您应该在HKCR \ CLSID下找到GUID,并且在该GUID下您应该看到InprocServer,ProgId等的其他键。同样,你的ProgId(由CreateObject使用)应该在HKCR中并且应该指向GUID。 – tcarvin