0

これが私の問題です:

私は、WindowsやUnixなどのさまざまなプラットフォームで実行できるアプリケーションを開発しました。このアプリは、純粋なWin32ボックス(WinXP)または純粋なWin64(Win2K3 x64エディション)およびその他のUNIXプラットフォームで正常に動作します。

32ビットモードの64ビットWin2K3で実行している場合にのみ失敗します。このアプリは、実行時にサードパーティのdllを呼び出します。また、サードパーティのdllは正式にインストールされていませんが、同じ環境内の場所にコピーされているだけです。また、これらのサードパーティdllの正しいバージョン(つまり、32ビットモードの場合は32ビットバージョン)を使用していると確信しています。このテストボックスで「パス」を手動で設定しても、機能しません。このアプリは、このWin2K3ボックスで32ビットモードでコンパイルおよび構築されています。

依存関係ウォーカーを実行すると、同じエラーが表示されます。そのサードパーティのdllが見つかりません。

誰かがこれにいくつかの光を当てることができますか?そのサードパーティのdllパスをアプリまたはシステムに表示するにはどうすればよいですか?

4

2 に答える 2

1

次のことを行うことをお勧めします。

  • 32 ビット アプリで問題のある DLL の 32 ビット バージョンを使用していることを確認します。
  • filemon を使用して、その DLL のロード中にアプリケーションが試行するパスを確認します
  • そのDLLをこれらのパスの1つに配置すると機能するかどうかを確認します
  • その DLL 自体で依存関係ウォーカーを使用します - 独自の未解決の依存関係がある可能性があります
于 2009-05-29T16:44:03.637 に答える
0

WOW64 は、32 ビット アプリケーションによる System32 フォルダーへのすべての呼び出しを SysWOW64 フォルダーにリダイレクトします。サードパーティの DLL は system32 フォルダーにありますか? 予想に反して、system32 フォルダーには Windows x64 の 64 ビット DLL のみが含まれているためです。

于 2009-05-31T04:02:49.933 に答える