0

既存のプログラム (いくつかの依存 DLL を含む EXE) の 64 ビット バージョンをビルドしようとしています。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 再頒布可能パッケージのインストールはトリックではありませんでした。ここでは、インストーラーが既にインストールされている新しいバージョンについて不平を言っています...

マニフェスト ファイルに一部の 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>
4

1 に答える 1

1

アプリケーション マニフェストはx86アーキテクチャを指定し、 の 2 つのエントリがありますcomctl32

x8632 ビット ビルドとamd6464 ビット ビルドを指定する必要があります。そして、comctl32一度だけリストする必要があります。依存アセンブリ アーキテクチャについては、必要に応じて指定できます*が、個人的には明示的に指定することを好みます。

于 2014-10-15T10:32:19.417 に答える