主程序EXE ----》调用DLL c++ (DLL中依赖libcrypto-1_1-x64.dll)
现在的情况下, 我只能把libcrypto-1_1-x64.dll 放在EXE同级下,才好使。
如果放在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;
}