Dll VB6 COM对象-仅在IDE运行时工作?
我在VB6中有一个古老的COM对象,它一直工作良好,直到最近。(他们不都是。)。唯一的代码更改(由svn验证)是在数组中包含一个新的字符串文字 VB6 IDE可以很好地编译对象。当我开始跑步时。。。并从命令提示符下执行以下测试vb脚本,对象工作正常,我看到了预期的对话框:Dll VB6 COM对象-仅在IDE运行时工作?,dll,com,vbscript,activex,Dll,Com,Vbscript,Activex,我在VB6中有一个古老的COM对象,它一直工作良好,直到最近。(他们不都是。)。唯一的代码更改(由svn验证)是在数组中包含一个新的字符串文字 VB6 IDE可以很好地编译对象。当我开始跑步时。。。并从命令提示符下执行以下测试vb脚本,对象工作正常,我看到了预期的对话框: dim o set o = CreateObject("MyDll.MyClassName") wscript.Echo "Testing object" wscript.Echo o.HelloWorld '
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,但与脚本中的相同。)
我尝试过的事情:
regsvr32
注册对象。这没有任何效果而且,不幸的是,用C#重写对象不是一个选项 微软称这是某种依赖性问题: 因为它在IDE中运行对象时起作用,所以有四种可能:
我相信如果您使用\windows\system32\cscript.exe来运行vbscript,那么您会做得很好。好吧,这听起来肯定像是32位dll的问题。。上述建议是正确的,但路径是错误的。。尝试使用C:\Windows\SysWOW64..中的CSCRIPT,尝试使用
%Windows%\SysWOW64
中的regsvr32.exe
注册DLL。它不同于%Windows%\System32
中的regsvr32.exe
(在64位操作系统上)
请参见此图。启动调试器时具体运行什么?这实际上是一个EXE项目吗?该项目是一个ActiveX DLL,而不是一个EXE。当我点击“运行”时,我不确定IDE在做什么。谢谢你的回答。我在32位模式下运行它,我想知道如果它在IDE中工作,缺少依赖项怎么会成为一个问题。对DLL的权限可能会有问题,但我正在更改文件权限以使每个人都能完全控制,它安装在c:\windows\system32中,应该在路径中。啊。不幸的是,自2011年以来,我改变了项目(和工作)不过谢谢你。