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"になると思われるが、"*"にすると自動判別するとの情報があった。
これでもエラーになった。
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>