将棋プログラミング

(将棋に関する)ソフトウェア開発のノウハウ等。

Windows x64 用マニフェスト

Visual Studio 2005 で作成した 32bit プログラムから 64bit プログラムを作成しようとしたところ、次のエラーが表示された。マニフェストがないというエラーである。

xxx.exe.manifest : general error c1010070: Failed to load and parse the manifest.

多分、32bit プログラムのマニフェスト(次)は、手で作成した。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
  version="1.0.0.0"
  processorArchitecture="X86"
  name="YourApp"
/>
<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>

これを元に 64bit プログラム用を作成した。
type="win32"は "x64"とする。
processorArchitecture="X86" は、"amd64"になると思われるが、"*"にすると自動判別するとの情報があった。

yasu1973fc2.blog99.fc2.com

これでもエラーになった。
dependencyコメントアウトしたところ、動作するようになった。
次が最終的なマニフェストである。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
  version="1.0.0.0"
  processorArchitecture="*"
  name="YourApp"
/>
<description>アプリケーションの説明</description>

<!--
<dependency>
  <dependentAssembly>
    <assemblyIdentity
      type="x64"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0"
      processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*"
    />
  </dependentAssembly>
</dependency>
-->

</assembly>