Visual c++ LoadLibrary失败,返回错误代码127

Visual c++ LoadLibrary失败,返回错误代码127,visual-c++,dll,loadlibrary,Visual C++,Dll,Loadlibrary,假设: 我有一个名为A.exe的可执行文件,它在路径:PathA中 A.exe加载库B.dll,B.dll加载库C.dll 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存在时,它会失败,

假设:

  • 我有一个名为A.exe的可执行文件,它在路径:PathA中
  • A.exe加载库B.dll,B.dll加载库C.dll
  • 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会被加载,因为您的工作路径是A.exe的路径。我认为当您动态加载它时,某种类型的cdecl dll可能会有一些问题。

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