叶子K时代 2022-12-13 13:49 采纳率: 33.3%
浏览 13

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同级目录下好使的方法。(不要去修改环境变量。)

  • 写回答

2条回答 默认 最新

  • ShowMeAI 2022-12-13 14:45
    关注

    详细解答如下,望采纳


    当一个程序调用一个 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;
    }
    
    评论

报告相同问题?

问题事件

  • 创建了问题 12月13日

悬赏问题

  • ¥15 ansys fluent计算闪退
  • ¥15 有关wireshark抓包的问题
  • ¥15 需要写计算过程,不要写代码,求解答,数据都在图上
  • ¥15 向数据表用newid方式插入GUID问题
  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。