我有一个在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显示正常,但第二个没有在尝试创建对象后。有什么想法吗?
答案 0 :(得分:1)
Python脚本可能通过ProgId创建后期绑定实例。我的猜测是你没有在这个DLL上保持二进制兼容性,因此ClassId值已经改变,导致早期绑定客户端代码(例如VB6客户端)出现问题。
答案 1 :(得分:0)
很可能.dll依赖于其他一些dll,这在非开发机器上是不存在的。您可以使用dependency walker进行检查。
第一行代码没有引发错误并不奇怪:在这一行中,Class1没有被初始化,在第二行中它是。因此,请检查Class_Initialise方法以获取对其他dll的调用。