【问题标题】:LoadLibrary failed, return errorcode 127LoadLibrary 失败,返回错误代码 127
【发布时间】:2016-12-23 07:51:42
【问题描述】:

假设:

  1. 我有一个名为 A.exe 的可执行文件,它位于路径:PathA。
  2. A.exe 加载库 B.dll、B.dll 加载库 C.dll。
  3. B.dll 位于路径:PathB。 C.dll 在 PathA 和 PathB 中都有一个副本。

所以我的问题是:当A.exe加载B.dll时,B.dll会加载C.dll的哪个路径?

在我的情况下,C.dll 有一些不同,比如一个是 _cdecl,另一个是 _stdcall。移除 PathA 中的 c.dll 后,A.exe 可以成功加载 B.dll;但是当 PathA 中的 c.dll 存在时,它会失败

【问题讨论】:

  • PathA\C.dll 将加载到您的场景中。 LoadLibrary 不知道是哪个模块在调用它;只有 EXE 的目录在搜索路径上。 LoadLibrary 的文档详细描述了搜索算法(因为它具有安全隐患)。
  • 是的,你是对的。调试后,我知道如果PathA\c.dll不存在,它会加载PathB\c.dll。一切都是关于 loadlibrary 的搜索策略。感谢您的帮助!

标签: visual-c++ dll loadlibrary


【解决方案1】:

我猜 PathA 中的 C.dll 会被加载,因为你的工作路径是 A.exe 的路径。我认为 _cdecl dll 在你动态加载时可能会出现一些问题。

【讨论】:

    猜你喜欢
    • 2016-01-28
    • 2010-11-06
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多