C++引用DLL中的依赖libcrypto-1_1-x64.dll,怎么可以放在DLL同层好使

主程序EXE ----》调用DLL c++ (DLL中依赖libcrypto-1_1-x64.dll)

现在的情况下, 我只能把libcrypto-1_1-x64.dll 放在EXE同级下,才好使。

如果放在DLL同级下不好使。

有什么办法,可以libcrypto-1_1-x64.dll放在DLL同级目录下好使的方法。(不要去修改环境变量。)

详细解答如下,望采纳


当一个程序调用一个 DLL 时,它需要知道 DLL 的位置,才能将它加载到内存中。通常情况下,Windows 会在一些特定的目录中搜索 DLL,如果找到了,就会加载它;如果没有找到,就会报错。

如果你想让 Windows 在 DLL 同级目录下搜索 DLL,可以在主程序启动时,使用 SetDllDirectory 函数指定 DLL 目录。例如:

#include <windows.h>
#include <string>

int main()
{
  // 获取当前程序路径
  char exePath[MAX_PATH];
  GetModuleFileNameA(NULL, exePath, MAX_PATH);

  // 分离出路径和文件名
  std::string exeDir = exePath;
  exeDir = exeDir.substr(0, exeDir.find_last_of("\\/"));

  // 指定 DLL 目录
  SetDllDirectoryA(exeDir.c_str());

  // 在这里调用 DLL
  ...

  return 0;
}