自 2000 年以来,我们一直致力于开发ActiveX 网格控件,并拥有很多满意的客户。该控件仍然受支持,但我们和我们的客户最近面临的主要问题是我们的网格控件广泛使用的 MS Office VBA 的 64 位版本。问题是我们的 OCX 是 32 位的,因为它是开发的/在 Visual Basic 6 中编译,不能生成 64 位代码 - 至少以其原始形式。
问题是:有没有办法将我们现有的VB6项目重新编译为64位ActiveX控件?是否可以使用 VB6 IDE 的插件或修改版从 VB6 中执行此操作,或者是否有其他工具(例如命令行编译器)来实现此目的?也许,另一个像 RealBasic 这样可以生成 64 位代码的开发环境?
当然,我们知道源代码(主要是 API 调用)也应该更新,但在这个问题中,我们询问从 VB6 源代码创建 64 位可执行 OCX 的一般可能性。
即使在发布之日起几个月后,也可以随意发布有关该问题的任何想法。
很抱歉,用 VB6 根本不可能创建 64 位控件。
一种解决方法可能是在 VB.NET 中创建一个 64 位用户控件,然后使用互操作在其中托管 32 位控件,但这是一个可怕的组装,不值得付出努力。
这个问题的唯一希望和可能的解决方案是RAD Basic项目。负责此开发的 Carles Royan 正在尽最大努力为我们提供为 64 位平台编译 ActiveX 的能力。也许,我们会在 2021 年下半年看到能够执行此操作的 RAD Basic 的 alpha 版本。发生这种情况时,我将更新此答案。
更新(2024 年 5 月):RAD Basic 终于在 2024 年开始为 ActiveX 控件提供基本支持,但我们大约在一年前切换到 twinBASIC,因为该开发环境具有导入和重新编译我们的 VB6 ActiveX 项目所需的所有功能。在 twinBASIC 开发者 Wayne Phillips 的持续和出色的支持下,我们终于成功地重新编译了 64 位的 ActiveX 网格控件。