我正在编写一个可以在16/32\64位系统上运行的小工具。通过将16位版本压缩为32位并在visual studio 2008 (/STUB -MS-DOS Stub File Name )中应用/stub开关,我的旧实用程序可以在32位和16位上运行。
我正在寻找一种方法来用我的64位可执行文件做同样的事情。目标64位系统是Win PE 64位,并且没有安装WOW64。
有可能吗?
发布于 2010-01-31 18:37:28
Windows可执行文件的DOS存根使用MZ节,而32位和64位可执行文件都使用PE节。这允许DOS存根存在于任一Windows可执行文件中,但在尝试组合32位和64位可执行文件时会导致冲突。
发布于 2010-01-31 18:45:27
你应该把你的32位和64位的util打包到另一个exe的资源中,让我们称它为32位的启动器。然后,您的启动器应该检测它是从哪个系统启动的,然后从它的资源中提取适当的二进制文件并启动它。
发布于 2010-02-01 09:20:23
Windows 32位运行wowexec.exe的16位应用程序,Win64运行wow64的32位应用程序。所以如果没有wow64,你的程序就不可能在Windows上创建一个通用的启动器。(注意: Mac OSX无论如何都支持单一二进制文件中的多个架构)
我能想到的最好的方法是创建一个MSI安装程序包,并将两个32/64exe都放入其中。
https://stackoverflow.com/questions/2171335
复制相似问题