2

VS2010 で開発された 32 ビット アプリがありますが、依存関係ウォーカーは、mfc100u.dll という名前の 64 ビット ファイルに依存していると言います。

ここでの問題は、一部のコンピューターがアプリの起動に失敗することです。

これに関する明確な情報を見つけることができませんでした。このファイルには 32 ビット バージョンと 64 ビット バージョンの両方がありますか? その場合、32 ビット アプリが 1 つのバージョンを使用し、64 ビット アプリが別のバージョンを使用するようにするにはどうすればよいですか? (そして、これらのアプリが同じディレクトリにある場合は?)

32 ビットに別の名前がある場合、それは何ですか?

4

2 に答える 2

3

Dependency Walker は、多くの場合、DLL の 64 ビット性を示しますが、これは誤りです。32 ビット アプリを実行している場合、WOW64 はファイル システム リダイレクターと呼ばれるものを使用します。

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384187(v=vs.85).aspx

System32 dir へのすべての要求は、syswow64 フォルダーにリダイレクトされます (必要かどうかに関係なく)。

64 ビット DLL が含まれている場合、アプリは読み込まれず、起動時に何らかの「Bad image」エラーが発生します。

32 ビット バージョンの Dependency Walker を実行してみて、それが適切に機能するかどうかを確認してください。

更新: MFC と C ランタイムの 32 ビット バージョンと 64 ビット バージョンは同じ名前です。これらは通常、再配布可能な MSI ファイルを使用して展開され、Windows が実行時にリンクを処理します。ただし、特定のバージョンをアプリにリンクする必要がある場合は、それらをアプリと同じフォルダーに展開する必要があります。同じフォルダーに 32 ビット バージョンと 64 ビット バージョンを混在させようとしないでください。この件に関してマイクロソフトは次のように述べています。

http://msdn.microsoft.com/en-us/library/ms235264.aspx

注: 問題を複雑にするために、VS2010 SP1 バージョンなど、同じファイルの異なる再配布可能なバージョンがあります。

于 2012-06-27T14:12:27.570 に答える
0

msvcr100.dll は、Windows で実行するように設計されていないか、エラーが含まれています。元のインストール メディアを使用してプログラムを再度インストールするか、システム管理者またはソフトウェア ベンダーのサポートに連絡してください。

于 2016-08-08T08:19:36.040 に答える