无法使用VB6程序从VB6 COM DLL创建对象

时间:2012-03-09 22:24:58

标签: python dll windows-7 vb6

我有一个在WinXP 32位系统上开发的VB6 COM DLL。它在C#,VB6和Python应用程序的PC上运行良好。我正在另一个WinXP 32位系统和Win7 32位和64位上测试DLL。 Python程序在任何系统上运行良好。 VB6程序给出'错误429:ActiveX组件无法创建对象'。

Dim foo As testdll.Class1
MsgBox (1)
Set foo = New testdll.Class1
MsgBox (2)

程序看到dll,因为第一个MsgBox显示正常,但第二个没有在尝试创建对象后。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

Python脚本可能通过ProgId创建后期绑定实例。我的猜测是你没有在这个DLL上保持二进制兼容性,因此ClassId值已经改变,导致早期绑定客户端代码(例如VB6客户端)出现问题。

答案 1 :(得分:0)

很可能.dll依赖于其他一些dll,这在非开发机器上是不存在的。您可以使用dependency walker进行检查。

第一行代码没有引发错误并不奇怪:在这一行中,Class1没有被初始化,在第二行中它是。因此,请检查Class_Initialise方法以获取对其他dll的调用。