Я создал 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>
Мои вопросы:
Действительно ли нормально, что 64-битное приложение получает манифест с processorArchitecture = "x86"?
Microsoft описывает процессорную архитектуру следующим образом:
Указывает процессор. Допустимые значения: x86 для 32-битной Windows
и ia64 для 64-битной Windows. Дополнительно.
Это меня очень смущает. Почему в списке нет amd64 / x86-64? У меня 64-битная Windows, но у меня нет архитектуры Intel Itanium.
- Это нормально, что, согласно манифесту, мое 64-битное приложение зависит от "Microsoft.Windows.Common-Controls" с processorArchitecture = "x86"?
Если мое приложение «использует» библиотеку DLL, например comctl32.dll, для отображения элементов управления, я предполагаю, что это должна быть та же архитектура, поскольку 64-битная не может связывать 32-битную без thunk.