VB6 'Out of memory' 可以在一台机器上编译但不能在另一台机器上编译
VB6 'Out of memory' Can compile on one machine but not another
所以这是一个几乎花了一整天时间才解决的问题。我想我会告诉我发生了什么事以及我是如何解决它的,以防其他用户仍然使用这个旧软件。
因此一些列已添加到本地计算机上的 TrueDBGrid。在测试构建产品并准备好部署之后,这会被推送到另一台机器上。添加所有列后,验证更改使一切正常,所有内容都被推送到处理生产的计算机。
这些更改包括逻辑更改、添加额外的全局变量、修改数据环境以及其他一些小更改。当更改被推送到机器时,就是发生 'out of memory' 错误的时候。此外,修改了不包含此问题的其他项目。就编译器而言,它指出错误来自 user32.dll。这就是发生的问题。
我将添加一些在发布下面的答案之前尝试过的额外内容。
我们阅读并尝试过的事情包括验证我们认为可能是原因的所有 dll 都没有注册。(部分原因是这台新的生产计算机最近发生了变化,并不是我们产品的所有部分都有还建立在它上面)还了解到,根据我的理解,如果一个 dll 作为已知的 dll 包含在注册表中并且当一个程序试图通过其他程序访问它时 windows 将尝试使用已知的dll 在搜索该区域之外之前。
验证我们所有的路径是否正确以及所有这些文件是否确实存在于所有 dll 被认为是一个可能的问题。
验证我们有足够的内存来 运行 所有需要的东西。由于一个主要原因,这被删除为一种可能性。跟踪任务管理器的性能应该没有接近达到最大容量的峰值。
我们还尝试将生产机器上的项目移动到我们的一台开发机器上,但也出现了同样的问题。通过不涉及正常过程的其他方式从我们的生产机器中获取相同的代码。两者都造成了问题。这让我们相信生产机器上的某些东西是问题的真正根源。
这一切都是昨天完成的,所以我可能错过了一些我们试图做的事情,但从其他研究中我们确实了解到,Visual Basic 抛出一个 'out of memory' 错误的情况并不少见这样做。
以下是我们解决此问题的方法。虽然我不太确定这是如何导致问题的以及我将如何重新创建它。
我们做了什么来解决这个问题。
我认为自从我们修改了数据环境并且我们知道内存和全局变量很可能不是问题,因为我们有其他应用程序使用更多变量或更大的变量并且它们都工作正常但这是第一次仍然在这里工作的人修改了数据环境,这是我们逐渐减少的事情清单中的下一件事情,试图解决这个问题。
我们将数据环境和数据网格恢复到之前的状态,并且它被破坏以验证是否有效。
它确实起作用了。
基于我们修改了生产构建中的数据环境以模仿在开发方面所做的事情,我们能够成功编译。
有人认为我的导师认为我们的开发端和现在生产端的 dll 版本在某种程度上是不同的。这导致更改以制作无法正确处理的方式发生。
所以 TLDR 数据环境变化导致了 'out of memory' 在大多数机器上有效但至少在其他机器上无效的错误。
所以这是一个几乎花了一整天时间才解决的问题。我想我会告诉我发生了什么事以及我是如何解决它的,以防其他用户仍然使用这个旧软件。
因此一些列已添加到本地计算机上的 TrueDBGrid。在测试构建产品并准备好部署之后,这会被推送到另一台机器上。添加所有列后,验证更改使一切正常,所有内容都被推送到处理生产的计算机。
这些更改包括逻辑更改、添加额外的全局变量、修改数据环境以及其他一些小更改。当更改被推送到机器时,就是发生 'out of memory' 错误的时候。此外,修改了不包含此问题的其他项目。就编译器而言,它指出错误来自 user32.dll。这就是发生的问题。
我将添加一些在发布下面的答案之前尝试过的额外内容。
我们阅读并尝试过的事情包括验证我们认为可能是原因的所有 dll 都没有注册。(部分原因是这台新的生产计算机最近发生了变化,并不是我们产品的所有部分都有还建立在它上面)还了解到,根据我的理解,如果一个 dll 作为已知的 dll 包含在注册表中并且当一个程序试图通过其他程序访问它时 windows 将尝试使用已知的dll 在搜索该区域之外之前。
验证我们所有的路径是否正确以及所有这些文件是否确实存在于所有 dll 被认为是一个可能的问题。
验证我们有足够的内存来 运行 所有需要的东西。由于一个主要原因,这被删除为一种可能性。跟踪任务管理器的性能应该没有接近达到最大容量的峰值。
我们还尝试将生产机器上的项目移动到我们的一台开发机器上,但也出现了同样的问题。通过不涉及正常过程的其他方式从我们的生产机器中获取相同的代码。两者都造成了问题。这让我们相信生产机器上的某些东西是问题的真正根源。
这一切都是昨天完成的,所以我可能错过了一些我们试图做的事情,但从其他研究中我们确实了解到,Visual Basic 抛出一个 'out of memory' 错误的情况并不少见这样做。
以下是我们解决此问题的方法。虽然我不太确定这是如何导致问题的以及我将如何重新创建它。
我们做了什么来解决这个问题。
我认为自从我们修改了数据环境并且我们知道内存和全局变量很可能不是问题,因为我们有其他应用程序使用更多变量或更大的变量并且它们都工作正常但这是第一次仍然在这里工作的人修改了数据环境,这是我们逐渐减少的事情清单中的下一件事情,试图解决这个问题。
我们将数据环境和数据网格恢复到之前的状态,并且它被破坏以验证是否有效。 它确实起作用了。
基于我们修改了生产构建中的数据环境以模仿在开发方面所做的事情,我们能够成功编译。
有人认为我的导师认为我们的开发端和现在生产端的 dll 版本在某种程度上是不同的。这导致更改以制作无法正确处理的方式发生。
所以 TLDR 数据环境变化导致了 'out of memory' 在大多数机器上有效但至少在其他机器上无效的错误。