我有一个用Turbo Pascal编译的32位exe文件。我需要启动它。当我使用Windows 7 32位时它运行良好,但现在我使用的是Windows 7 64位,我得到以下异常:
指定的可执行文件不是此OS平台的有效应用程序。
为了确保它在32位系统上运行,我在32位平台上启动了C#程序 - 它可以工作。
那么如何在64位操作系统中启动32位exe文件?
由于
答案 0 :(得分:12)
Turbo Pascal只能生成16位代码,从来没有一个版本可以创建32位可执行文件。运行16位代码需要使用CPU中的实模式仿真支持的虚拟机(virtual 8086 mode)。如果处理器以64位模式运行,则此仿真不可用。
您无法在64位操作系统上运行16位进程。您可能会尝试使用DOSBox emulator。
答案 1 :(得分:2)
如果从.NET(C#)应用程序中启动32位exe,则需要将.NET应用程序的目标设置为x86。如果将其设置为任何CPU,则它将在64位操作系统上作为64位进程运行,因此无法启动32位进程。
编辑:此MSDN文章介绍了如何修改此设置: http://msdn.microsoft.com/en-us/library/5b4eyb0k.aspx
编辑2:正如Gabe指出的那样,64位应用程序无法启动32位exe应该没有理由。我知道你不能在64位应用程序中使用32位DLL。只是认为值得尝试,因为文档没有指定在使用System.Diagnostics.Process
启动exe时是否存在相同的限制。
答案 2 :(得分:2)
您可以从64位应用程序启动32位应用程序。
C#示例1:
var processStartInfo = new ProcessStartInfo("C:\MyApp.exe");
var process = new Process { StartInfo = processStartInfo };
process.Start();
process.WaitForExit();
C#示例2:
System.Diagnostics.Process.Start("C:\MyApp.exe");
答案 3 :(得分:1)
我认为Turbo Pascal没有64位编译器,所以我认为您唯一的选择是针对32位环境编译您的应用程序。