-1
を返し、失敗しました:のLoadLibraryが思うエラーコード127
- を私はA.EXEという名前の実行可能ファイルを、持っている、それはパスにあります:PathA。
- A.exe loadlibrary B.dll、B.dll loadlibrary C.dll。
- B.dllがパス:PathBにあります。 C.dllはPathAとPathBの両方にコピーを持っています。
私の質問です:A..dllがB.dllを読み込むとき、C..dllのどのパスがB.dllによって読み込まれるのですか?
私の状況では、C.dllは、1つが_cdeclで、もう1つが_stdcallであるなど、何か異なるものがあります。 PathAのc.dllを削除すると、A.exeはB.dllを正常にロードできます。しかし、PathAのc.dllが存在する場合、それは失敗します。
シナリオでは 'PathA \ C.dll'がロードされます。 'LoadLibrary'は、どの特定のモジュールがそれを呼び出すのかを知ることができません。 EXEのディレクトリのみが検索パス上にあります。 'LoadLibrary'のドキュメンテーションは、探索アルゴリズムを詳細に記述します(セキュリティの意味があります)。 –
はい、あなたは正しいです。そして、デバッグ後、PathA \ c.dllが存在しない場合、PathB \ c.dllをロードします。すべては、loadlibraryの検索戦略に関するものです。ご協力ありがとうございました! – lwiu