我正在编写一个应该在16 \ 32 \ 64位系统上运行的小实用程序。
我的旧实用程序通过将16位版本压缩到32位并在visual studio 2008中应用/stub
开关(/STUB -MS-DOS Stub File Name )来运行32位和16位。
我正在寻找一种方法来对我的64位可执行文件做同样的事情。 目标64位系统是Win PE 64位,它没有安装WOW64。
有可能吗?
答案 0 :(得分:3)
Windows可执行文件的DOS存根使用MZ部分,而32位和64位可执行文件都使用PE部分。这允许DOS存根存在于Windows可执行文件中,但在尝试组合32位和64位可执行文件时会导致冲突。
答案 1 :(得分:2)
你应该在另一个exe的资源中打包32和64位的util,让我们称之为32位的启动器。 然后你的启动器应检测它从哪个系统启动,然后从它的资源中提取适当的二进制文件并启动它。
答案 2 :(得分:0)
Windows 32位由wowexec.exe运行16位应用程序,Win64通过wow64运行32位应用程序。因此,如果没有wow64,您的程序将无法在Windows上创建通用启动程序。 (注意:Mac OSX无论如何都支持单个二进制中的多个架构)
我能想到的最好的方法是创建一个MSI安装程序包并将两个32/64 exes放入其中。