虚假 "cannot load control, license not found" 错误?

Spurious "cannot load control, license not found" error?

当我尝试在设计器中加载表单时,它显示 "runtime error 0" 并生成一个日志文件,其中包含:

Line 15: Cannot load control xxxx; license not found.

但是有问题的控件没有任何许可限制。它没有安装程序,只需要注册 (regsvr32)。

不仅如此,多年来这一直没有任何问题,直到最近才开始。它会影响许多表单,这些表单具有来自特定 OCX 的任何控件。

看来有什么东西在愚弄 VB6,使其认为许可证检查失败,或者至少显示无意义的错误消息。

我曾尝试使用 Process Monitor 对此进行跟踪,但我无法在日志中发现任何有用的线索。至少,显然没有问题。

知道是什么原因造成的吗?到目前为止我找不到原因。

谢谢

我假设这是第三方 OCX...许多此类产品都带有自己的安装程序,可生成许可证文件;简单地复制,甚至 regsvr32ing .ocx 都不足以在开发环境中使用它。如果你还有原来的安装程序,可以试试运行那个重新生成license。如果做不到这一点,您可以在现有的工作开发机器上寻找适当命名的 .lic 文件(在 \Windows\System32 或VB6 安装目录,或安装 .ocx 的目录)并手动将其复制到新开发机器上的相同位置。

(回答我自己的问题,其他人是否应该再次 运行)。


据我所知,这个错误是由 FRX 文件 and/or 和 FRM/FRX 文件对不同步引起的。

通过返回源代码管理,我最终可以找到一个没有问题的修订版。仅此一项似乎就可以消除计算环境中的任何问题。 (即,错误的 VB6 安装,磁盘 space,等等)

我手动重新做了某些更改并更新了旧代码,到目前为止问题没有再次出现。


编辑 被删除的文本并非不正确,但不够具体——从那以后我了解到似乎是根本原因。

问题是我们将 32 位 ICO 文件(图标)加载到其中一种 VB6 格式的图像列表中。现在,传统的 32 位颜色图标在 VB6 中不可用,即使尝试这样做也会出错。然而,出于某种原因 某些 Windows PC 现在将允许此操作 - 这可能是一个定时炸弹。

问题是:当 运行 在不支持此类图标的不同 PC 上时,以这种方式保存的表单可能会导致此问题中的错误。

这将在 IDE 加载表单时发生,或者如果已编译的 EXE 运行 在不同的计算机上 运行,这会遵守原始 VB6 图标限制!

我不知道为什么在发生这种情况时会显示完全没有意义的 "licensing" 错误消息。

在我的例子中,我们并没有故意引入这个图标,这是一个错误,所以花了很长时间调试并最终解决了这个问题(加上 VBForums 上的人的一些非常有价值的建议).

我专门创建了 a different question 来尝试找出 Windows 的底层元素发生了变化导致了这个问题。