4

私はC++を使用して32ビットdllをロードしようとしています(32ビットアプリケーションから、Windows 7 64ビットで)。LoadLibraryはNULLを返し、GetLastErrorは「指定されたモジュールが見つかりませんでした」に対して126を返します。

LoadLibrary関数に完全なアドレスを渡します。Dependency Walkerでdllを開きましたが、GPSVC.dllには依存関係がありませんでした。

私が行ったグーグルから、Dependency WalkerはこのGPSVC.dllを欠落している依存関係として誤って表示することが多く、32ビットバージョンがないため、それが実際の問題ではないと思います。

私は過去にdllをあまりいじくり回したことがないので、うまくいけば、それは私が学ぶことができる比較的単純な問題です。

助けてくれてありがとう!

4

2 に答える 2

3

私は自分の問題を解決しましたが、残念ながらそれはかなり明白な解決策です。dllを含むディレクトリをPATH変数に追加しました。どうやらdllはそれらの依存関係のために彼ら自身のディレクトリを探しません。

于 2011-02-15T22:49:53.653 に答える
2

他のdllのDllMainにデバッグできますか?はいの場合、デバッガーで直接チェックできます。Windbgを使用すると、モジュールの負荷を中断できるため、何が起こるかを1ステップで実行できます。dllのlibに対して直接リンクしていますか?そうでない場合は、OSが表示するエラーメッセージを確認するためにそうすることができます。0xC0000142の場合、DllMainはfalseを返しました。0xC0000022の場合、実行可能ファイルまたは依存するdllの1つに実行権限がありません。コード126は、モジュールが見つからないだけで、全体像を示しているようです。欠落しているdllの場所に手動でPATH変数をディレクトリに設定できます。dllを他のマシンにデプロイしますか?はいの場合、通常のマシンにインストールされていないデバッグC-Runtimeに対してリンクしている可能性があります。

あなたの、アロイス・クラウス

于 2011-02-15T22:49:01.277 に答える