windows-7 - 将 16 位 DLL 加载到 Windows 7 64 位上的 32 位进程中

标签 windows-7 windows-7-x64 32-bit 16-bit

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

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

是否有任何可能的方法可以直接从 32 位应用程序加载现有的 16 位 DLL,从而完全删除 16 位可执行文件?

我研究过 thunking,但 Windows 7 似乎也不支持该功能。

最佳答案

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

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

关于windows-7 - 将 16 位 DLL 加载到 Windows 7 64 位上的 32 位进程中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14991459/

相关文章:

c# - 在 Windows 7 和 Xp Sp3 的 C# 中控制 Windows 防火墙

windows-7 - Mercurial 扩展无法在 Windows 7 x64 中运行?

sql-server - ElasticSearch 没有拉出整个 SQL 表

c# - 如何编译 32 位(我的操作系统是 64 位)- 错误 exe 不是有效的 Win32 应用程序

ios - (BOOL)strstr() 在 32 位 iOS 设备中失败

memory-management - 16 位和 32 位应用程序之间的最终区别是什么?

c# - 问题 : Using Windows 7, 运行我的应用程序时出现未授权访问异常

c# - 无法获取窗口句柄,不支持 Windowless ActiveX 控件?

java - 在 Java 程序中启用/禁用 IPv6 Windows 设置

eclipse - Windows 7 64 位 : doesn't install "Windows Binaries for Mercurial" 上的 MercurialEclipse