【问题标题】:VB6 .OCX file works, but not when I recompile (identical code)VB6 .OCX 文件有效,但在我重新编译时无效(相同的代码)
【发布时间】:2023-04-10 05:01:01
【问题描述】:

我正在更新一个使用 .ocx 文件与数据库通信的工作程序。该程序适用于几个月前编译的 .ocx 版本。但是,如果我尝试编译新版本的 .ocx 文件,程序就不想再与数据库通信了。

我的第一个想法是 .ocx 文件的代码一定有问题。因此,我尝试打开 .ocx 项目的备份(其中包含与工作 .ocx 文件相同的代码)并对其进行编译。但这也行不通。与工作 .ocx 相同的代码,在安装过程中通过相同的注册表进程,但它不起作用。

我尝试编译更多备份,一直到 2005 年,但除了几个月前编译的那个 .ocx 文件之外,没有一个 .ocx 文件可以工作。

每次我重新编译.ocx文件时,我也会在开发环境中将它注册到我的程序中,并重新编译主程序.exe文件。奇怪的是,当我在开发环境中运行程序时,我从备份中编译的所有 .ocx 文件都可以正常工作。但是一旦我编译了主 .exe 文件,将文件移动到另一台计算机上的安装程序中并安装它们,程序就会停止正常工作。

总而言之,我有一堆 .ocx 项目,它们将在同一台计算机上的开发环境中编译和使用我的程序。一旦我将文件移动到安装程序并安装,程序就会停止工作。我可以让它与几个月前找到的 .ocx 文件一起使用,但是当我尝试编译生成该工作文件的同一个项目时,该程序不起作用。

我尝试从几年前的备份中提取 .ocx 文件而不重新编译(类似于我对工作副本所做的),但也失败了。我只能让我的安装程序使用几个月前的那个 .ocx 文件。代码不会有问题,因为我尝试编译具有相同代码的工作 .ocx 的原始项目。我认为这不是注册表问题,因为所有文件在安装过程中都经过相同的注册表过程。

至少我有一个可用的安装程序(使用我找到的 .ocx),但现在我永远无法更改 .ocx 文件,因为我编译的所有内容都无法正常工作。我一定错过了什么,但我不知道是什么。

【问题讨论】:

  • 请包括您遇到的确切错误。 “不起作用”的错误很难诊断。确切的错误可能会影响某人的记忆。我愿意对你的问题采取 WAG。 ocx的版本是否不同。使用 ocx 的项目在参考中包含版本号。要查看版本号,请打开属性窗口并转到详细信息选项卡。
  • 尝试:1) 打开 new OCX 项目 2) 点击 Project -> Properties -> Component Tab 3) 选择 Binary Compatibility 4) 浏览到下面文件选择框中的工作 OCX 5)重新编译 OCX
  • 使用 VM 设置干净的构建环境 (tm) 并在您的项目中使用二进制兼容性。拍摄初始 VM 的干净快照——您的注册表现在可能已经充满了过去版本编译的垃圾。您无法使用 regsvr32 /u 清理这些内容,除非您将所有曾经编译过的 OCX 都保存在您的开发机器上。
  • @user2437443 回复您已删除的问题;见msdn.microsoft.com/en-us/library/aa733715(v=vs.60).aspx

标签: vb6 installation registry exe ocx


【解决方案1】:

感谢您的快速回复! Alex K. 的解决方案非常有效。

为了解决我的问题,我打开了一个新的 ocx 项目,转到 Project->Properties->Component 选项卡,选择二进制兼容性选项并浏览到工作 ocx 文件的位置。

现在,我可以对我的 ocx 项目进行更新,使其适用于我的应用程序。

【讨论】:

  • 对不起,堆栈溢出还是很新
猜你喜欢
  • 2018-11-14
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 2021-07-13
  • 2020-05-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-05
相关资源
最近更新 更多