【发布时间】:2011-06-12 16:01:33
【问题描述】:
我在 VB6 中有一个古老的 COM 对象,直到最近它一直运行良好。 (不都是)。所做的唯一代码更改(由 svn 验证)是在数组中包含一个新的字符串文字。
VB6 IDE 可以很好地编译对象。当我点击 Run|Start... 并从命令提示符执行以下测试 vb 脚本时,该对象工作正常,我看到了我期望的对话框:
dim o
set o = CreateObject("MyDll.MyClassName")
wscript.Echo "Testing object"
wscript.Echo o.HelloWorld ' runs a test method that returns "Hello World"
wscript.Echo "Done"
但是,当我在 IDE 中停止调试并尝试从同一命令提示符运行相同的 vbscript 时,我收到错误:
(出于安全原因删除了ProgID,但它与脚本中的相同。)
我尝试过的事情:
我在启动和停止调试器的时候怀疑DLL可能已经被VB注册和注销了,所以在运行测试脚本之前我也尝试用
regsvr32注册对象。这没有任何效果。我还从注册表中删除了对 DLL 的所有引用,并重新注册了该对象。同样的错误。
我删除了 DLL 并从 VB(文件|制作...)重新构建它并重新注册了 DLL。同样的错误。
机器是 Win7 Ultimate x64,用 VB6 构建的对象。
有什么建议吗?
而且,不,不幸的是,用 C# 重写对象不是一种选择。
【问题讨论】:
-
启动调试器时到底运行了什么?这实际上是一个EXE项目吗?那么行为就正常了。
-
该项目是 ActiveX DLL,而不是 EXE。当我单击“运行”时,我不确定 IDE 在做什么。