2

我编写了一个 32 位应用程序,它启动一个 16 位可执行文件,它加载一些 16 位 DLL 来执行应用程序的某些功能。它在 Windows 7 32 位上运行良好,但不能在 Windows 7 64 位上运行,因为该版本的操作系统不包含 NTVDM。

代码的 16 位部分非常广泛,移植到 32 位会非常昂贵。此外,它使用了一些来自不再经营的公司的第 3 方 16 位 API;因此,必须完全重新创建该代码,从而增加成本。

有没有办法直接从 32 位应用程序加载现有的 16 位 DLL,完全删除 16 位可执行文件?

我已经研究过 thunking,但它似乎也不支持 Windows 7。

4

2 回答 2

1

不,这在 Windows 中是不可能的。

于 2013-02-26T19:27:37.370 回答
1

您必须使用模拟器或虚拟机。

或者,如果这不是一个选项,那么您可以自己编写一个原始模拟器,逐条读取机器代码并相应地修改假寄存器和内存,当程序向外调用时,您将不得不生成响应。

于 2013-02-26T19:50:20.183 回答