无法执行我的程序的64位版本

时间:2014-10-15 09:24:41

标签: windows visual-studio-2010 side-by-side win64 sxs

我只是想构建现有程序的64位版本(带有一些依赖DLL的EXE)。因为它在Linux下非常容易(只是重新编译它),我很乐观它在Windows下可能有点类似。不幸的是,它不是......

启动新编译的EXE后,收到错误消息

The application has failed to start because its side-by-side configuration is incorrect...

追踪它的原因我做了一个SxS跟踪,显示以下错误信息:

ERROR: Two assemblies have the same assembly name with different version.
Assembly 1: C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac.manifest.
Assembly 2: INFO: Manifest found at C:\Windows\WinSxS\manifests\amd64_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7601.17514_none_fa396087175ac9ac.manifest..

那么......这是什么意思?我该如何解决这个问题?为x64安装VS2010-redistributable软件包并非诀窍,此处安装程序抱怨已安装的较新版本...

Manifest文件提到了一些X86 ......这是什么原因?如果是:我怎样才能找到哪个X(和它依赖的DLL?

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 <assemblyIdentity version="0.64.1.0" processorArchitecture="x86" name="Controls" type="win32">   </assemblyIdentity>
  <description>wxWindows application</description>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="amd64" publicKeyToken="6595b64144ccf1df" language="*"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
      </requestedPrivileges>
    </security>
  </trustInfo>
</assembly>

1 个答案:

答案 0 :(得分:1)

您的应用程序清单指定x86体系结构,并有comctl32的两个条目。

您应为32位版本指定x86,为64位版本指定amd64。你应该列出comctl32一次。对于依赖程序集体系结构,您可以根据需要指定*,但我个人更喜欢明确。