虚假 "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 的底层元素发生了变化导致了这个问题。
当我尝试在设计器中加载表单时,它显示 "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 的底层元素发生了变化导致了这个问题。