5

C++ で作成したプログラムを起動しようとすると、このエラーが発生します。他のコンピューター (XP SP3 32 ビット) では正常に動作しますが、Windows 7 64 ビット バージョンでは動作しません。プログラムで Dependency Walker を実行すると、IESHIMS.dll が見つからないというメッセージが表示されますが、32 ビット バージョンと 64 ビット バージョンの両方の Internet Explorer フォルダーにあります。

誰でもこれで私を助けることができますか?

4

1 に答える 1

20

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

これはおそらく 64 ビット版の Windows では少し古くなっていますが、32 ビット プログラムが 64 ビット DLL を読み込もうとしている可能性は 90% です。Windows がそれを防ぐために行うことはたくさんあります。ファイル システムの仮想化により、c:\windows\system32 からの DLL の読み込みは、32 ビット DLL のホームである c:\windows\syswow64 にリダイレクトされます。レジストリの仮想化により、COM サーバーが COM クライアントのビット数と一致することが保証されます。

これらの対策をバイパスする何かがあります。SetDllDirectory() を使用した可能性があります。または、DLL を EXE と同じフォルダーにコピーしました。または、システムの PATH 環境変数が、プログラムが適切な DLL を見つけるのに役立つことを望んでいます。そのようなもの、それ以外の場合はあなたの質問からは明らかではありません。Windows イベント ログにその記録があるはずです (100% 確実ではありません)。他のすべてが失敗した場合、SysInternals の ProcMon ユーティリティは、ロードしようとしているファイルを表示できます。

于 2010-07-31T16:56:24.100 に答える