【问题标题】:Cannot create VB6 ActiveX dll无法创建 VB6 ActiveX dll
【发布时间】:2015-11-12 22:13:51
【问题描述】:

我正在尝试创建一个简单的 VB6 ActiveX exe 并从 Excel 中调用它。

在 VB6 中,我使用所有默认设置创建了一个名为 BigTrev 的 ActiveX DLL 项目。

我用一个不包含代码的方法创建了一个名为 Trev 的 MultiUse 类

Public Sub HelloWorld() 
End Sub

我制作了一个 DLL 并从命令行注册它(VB6 也为我注册了它,但我还是使用 cmd 完成了它)。

然后在 Excel 中,我在新工作簿中创建对我的 DLL 的引用。它显然已经注册,因为 Intellisense 知道 Trev 和 HelloWorld。

Sub cats()

    Dim derek As BigTrev.Trev
    Set derek = New BigTrev.Trev
    derek.HelloWorld

End Sub

它在 Excel 中编译,当我单步执行它时,它在第二行中失败,即 Set one。错误信息是“ActiveX 组件无法创建对象”。

为什么?多年前,当 VB6 被广泛使用时,我已经做过很多次或类似的工作,我现在使用的是 Windows 7,并且我是我的机器上的管理员。

【问题讨论】:

  • 失败如何/有什么错误?
  • 抱歉添加到问题中,ActiveX 组件无法创建对象
  • 本机 64 位应用程序无法加载 32 位二进制文​​件。见here
  • ActiveX 控件是指将加载到 Excel 的 64 位进程空间中的 DLL 或 OCX。 “ActiveX 服务器”(EXE)应该可以正常工作,因为它在自己的进程空间中运行。
  • 它只是“ActiveX EXE”,很容易发现。

标签: com vb6 activex


【解决方案1】:

我建议使用相关的 regsvr32.exe 注册 DLL(或 EXE,如果这是您选择的方向)。在这种情况下,如果您要注册一个 32 位 DLL 以在 64 位环境中使用,请使用隐藏在 c:\windows\syswow64 中的那个。

遗憾的是,我没有 Excel(震惊、恐怖),而我拥有的电子表格 (LibreOffice) 是 32 位的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2010-11-01
    • 1970-01-01
    相关资源
    最近更新 更多