Существует ли инструмент, который объединит 32-битное + 64-битное приложение и объединит их в одно 32 + 64-битное приложение? - PullRequest
3 голосов
/ 08 октября 2011

В Windows 2008 R2 server (установка ядра сервера) wow64 больше не является обязательным компонентом .

Я могу скомпилировать 32-битное приложение, используя тот же исходный код, что и 64-битное приложение (с несколькими ifdefs здесь и там).

Существует ли инструмент, который помещает обе версии моего приложения в один исполняемый файл, так что мое 32 + 64-битное приложение будет работать на чистой 32-битной Windows и только на 64-битной Windows?

Обратите внимание, что я не говорю о упаковщике, поскольку сам упаковщик будет 32- или 64-разрядным.

1 Ответ

6 голосов
/ 08 октября 2011

Нет. Заголовок EXE помечен архитектурой процессора, поддерживаемой кодом, содержащимся в EXE. Используйте DUMPBIN.EXE -HEADERS для изучения.

EXE сообщает о типе машины как: x86: 0x14C x64: 0x8664 ARM: 0x1C4

Если вы хотите развернуть свое приложение, создайте версию для x86, версию для x64 (ARM будет поставляться позже с Win8) и создайте пакет установки (MSI), который может динамически исследовать архитектуру машины, на которой вы работаете установить приложение и сложить одно или оба приложения. Вот как, например, Adobe теперь распространяет Flash x86 и Flash x64 в последней версии Flash Player.

Если вы хотите создать действительно универсальный двоичный файл, создайте его в .NET и пометьте как целевой "Любой" ЦП. После этого ваше приложение будет привязано к архитектуре вашего компьютера (или к процессу размещения в случае надстройки).

...