Манифест приложения для 64-битных приложений - PullRequest
0 голосов
/ 08 января 2019

Я создал 64-разрядное приложение для Windows и хотел бы включить манифест приложения.

Я сравнил несколько DLL других производителей, например, shell32.dll, и увидел, что они установили значение "x86" как процессор-архитектура; Пример:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly
  xmlns="urn:schemas-microsoft-com:asm.v1"
  manifestVersion="1.0">
<assemblyIdentity
    name="...."
    processorArchitecture="x86"
    version="...."
    type="win32"/>
<description>....</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="x86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly> 

Мои вопросы:

  1. Действительно ли нормально, что 64-битное приложение получает манифест с processorArchitecture = "x86"?

  2. Microsoft описывает процессорную архитектуру следующим образом:

Указывает процессор. Допустимые значения: x86 для 32-битной Windows и ia64 для 64-битной Windows. Дополнительно.

Это меня очень смущает. Почему в списке нет amd64 / x86-64? У меня 64-битная Windows, но у меня нет архитектуры Intel Itanium.

  1. Это нормально, что, согласно манифесту, мое 64-битное приложение зависит от "Microsoft.Windows.Common-Controls" с processorArchitecture = "x86"? Если мое приложение «использует» библиотеку DLL, например comctl32.dll, для отображения элементов управления, я предполагаю, что это должна быть та же архитектура, поскольку 64-битная не может связывать 32-битную без thunk.
...