我目前有一个 32 位 PowerBuilder 应用程序,我们正在尝试将其移植到 Windows 7 64 位环境。意识到 PowerBuilder 10.5 是在 Window7 出现之前构建的,以及这个应用程序构建在 Windows XP 32 位环境中的明显事实。
32 位 PowerBuilder 应用程序在 Windows 7 64 位计算机上部署时会出现以下错误消息。 应用程序终止。错误:在对象objectwindow的函数ivvisiblecolumn的第 44 行中指定的 DataWindow 行/列无效
数据库配置文件设置指向 OLEDB,后端数据库是 MSSQL 2008。目前该应用程序确实在 Windows7 64 位环境中运行,并且似乎仅在查询模式下工作。这意味着我们可以读取数据窗口上的一些记录,但是一旦您尝试进行交易,它就会爆炸。
我的问题是 - 是否可以让 32 位应用程序在 64 位环境中运行?
到目前为止,客户要求提出可能的解决方案,但没有升级到 PowerBuilder 12.5 的想法。本质上,他们希望保持在 10.5,但让应用程序从 32 位环境运行到 64 位……如果你明白我的意思的话,苹果到橙子。需要进一步调查代码是否无法在 64 位中运行,或者 64 位中 powerbuilder 客户端运行时的 dll 问题。他们真的试图远离任何应用程序重写,因为应用程序比基督成为木匠时更古老。我认为该应用程序最初是在 PB 6.5 中构建的。
到目前为止,我有以下想法,但我对此并不陌生: - 我了解 Windows 7 带有虚拟机 IIRC。我认为它被称为WOW64。是否可以在服务器上创建虚拟机并让用户在 64 位机器中运行 32 位应用程序?然后创建某种快捷方式供用户简单地点击?
- 我们确实有一台虚拟 XP 机器和一台虚拟 Windows7 64 位机器用于测试。PowerBuilder 10.5 实际安装在 Windows 7 上并且似乎运行良好。然而,在运行模式或调试下运行应用程序会导致许多错误,如您所想。
- 该应用程序已在 XP 中构建并在 Windows 7 上运行,但结果出现上述错误消息。
- 我还没有研究在兼容模式下运行,但是团队告诉我它不起作用。
我还没有看过 UAC 或 ALC 用户管理。这会影响 64 位系统吗?
我知道这与应用程序无关,但是...我已经看到在某些情况下,32 位应用程序只需针对某些 DLL 文件即可在 Windows 64 位环境中工作。一个示例是 Microsoft Flight Simulator X,其中 32 位游戏会在 64 位 Windows 7 中崩溃。解决方案是简单地获取一个名为 uiautomationcore.dll 的 Vista 64 位 DLL 文件并将其复制到 Windows 环境中。游戏还必须安装在 C: 的根目录上才能运行。
有人对我如何解决这个问题有任何建议吗?
如果我在这里的笔记含糊不清,我深表歉意。
更新:有人在 64 位机器上使用过 PB 10.5 运行时文件吗?我想知道 powerbuilder 客户端运行时是否将其 dll 安装到应用程序 C:\XXX 的正确位置或找不到它?想知道如何解决这个问题。