在 Windows 操作系统中,当可执行 exe 文件需要使用某个.dll 文件时,它会在以下几个地方寻找该文件:

首先,它会在与可执行文件相同的目录中查找该文件。
如果找不到该文件,则会在系统搜索路径中查找该文件。

因此,如果您的.dll 文件不在可执行文件所在的目录中,您可以采取以下措施来确保可执行文件能够找到并使用该文件:

  1. 将.dll 文件复制到可执行文件所在的目录中。
    将 DLL 文件复制到可执行文件所在目录中,可以让可执行文件在运行时直接从该目录下加载所需的 DLL 文件,避免了不同版本间冲突的问题。这是最常见和推荐的做法。

  2. 将.dll 文件添加到系统搜索路径中。
    将 DLL 文件添加到系统搜索路径中,需要修改系统环境变量,将 DLL 文件添加到 PATH 环境变量中。

  3. 将 .dll 文件放到系统目录中
    将 DLL 文件复制到 Windows 系统目录中,可以让操作系统在需要时自动加载这些 DLL 文件。不过这种方法需要管理员权限,并且可能会导致不同版本的 DLL 文件互相冲突。

  4. 在代码中显式指定.dll 文件的路径。
    在生成的可执行 exe 文件中调用 LoadLibrary 函数来加载 .dll 文件。LoadLibrary 函数会搜索一系列的文件路径来查找指定的 .dll 文件,因此你可以将 .dll 文件的路径添加到这些路径中,以确保 .dll 文件可以被找到。例如:

    HMODULE hModule = LoadLibrary(TEXT("path/to/your/dll.dll"));
    if (hModule == NULL) {// 加载失败,进行错误处理
    }
    

    如果你需要在 .dll 文件中使用其他的 .dll 文件,那么可以通过调用 SetDllDirectory 函数来添加其他的文件路径。例如:

    BOOL success = SetDllDirectory(TEXT("path/to/other/dll/files"));
    if (!success) {// 设置路径失败,进行错误处理
    }
    

    这样,当 .dll 文件需要使用其他的 .dll 文件时,它们就可以被找到。

    需要注意的是,使用动态加载的方式加载 .dll 文件需要在程序运行时进行,因此需要在适当的时机调用 LoadLibrary 函数来加载 .dll 文件,以确保 .dll 文件可以被找到并正确地使用。

总结:
通常第一种方法是最简单的解决方案,因为它不需要对系统配置进行任何更改,并且能够确保可执行文件能够找到所需的.dll 文件。

windows 环境下,可执行 exe 文件和 .dll 文件在不同目录下的处理办法相关推荐

  1. Unity Editor - 在编辑器模式下执行exe程序、打开文件、定位脚本行

    执行exe程序.打开文件 当我们想在Unity 编辑器下 通过exe程序打开指定脚本时我们可以调用以下API 这里我是通过vscode 打开 lua 脚本 并定位到具体某一行. static void ...

  2. .CS文件编译生成.DLL文件 .EXE文件(C#网络搜集)(转)

    如果没有VS用下面的办法 搜索csc.exe 打开cmd 转到csc.exe的文件夹 运行 csc /t:library N:\NET\cs\*.cs   N:\NET\cs\*.cs  是你的cs文 ...

  3. 系统中的obj文件、dll文件、so文件、lib文件、exe文件、vcproj文件、sln文件

    1. 源代码(.c等)要经过编译器的编译得到目标代码(.obj),再经过链接器使目标代码和库函数及启动代码合并成一个文件,即可执行文件exe. 2. 生成可执行文件时的链接过程又可根据链接库(动态链接 ...

  4. .CS文件编译生成.DLL文件 .EXE文件

    如果没有VS用下面的办法 搜索csc.exe 打开cmd 转到csc.exe的文件夹 运行 csc /t:library N:\NET\cs\*.cs   N:\NET\cs\*.cs  是你的cs文 ...

  5. 计算机丢失tlps,win7系统下PS提示计算机丢失tlpsplib10.dll文件的解决方法

    ps是一款图片处理软件,很多win7系统用户由于工作或学习需要会安装ps来使用,但是有时候要打开ps的时候,却提示计算机丢失tlpsplib10.dll文件,该怎么办呢,现在就给大家分享一下win7系 ...

  6. 20191004在LINUX下如何将tar压缩文件解压到指定的目录下

    百度搜索:tar 解压缩到指定目录 https://zhidao.baidu.com/question/9844116.html 在LINUX下如何将tar压缩文件解压到指定的目录下 各位,请教一下在 ...

  7. Laravel 导出Excel文件保存到本地的public目录下

    Laravel 导出Excel文件保存到本地的public目录下 控制器中的代码: $filename = md5($id) . '.xlsx';//store方法的第三个参数,对应的是filesys ...

  8. 编译asp.net文件为dll文件

    编译asp.net文件为dll文件 Asp.net不是asp的简单升级,而是微软.Net计划中的一个重要组成部分,它依托.Net的多语言与强大的类库支持,引进了服务端 HTML控件与WEB控件,自动处 ...

  9. [MATLAB]将.m文件生成dll文件

    环境:VS2017+MATLAB R2017a ①配置编译环境 在命令行窗口中输入"mbuild -setup"(横线前有一个空格),如果出现如下图所示的提示信息即为成功. 如果提 ...

最新文章

  1. [翻译] DSL和模型驱动开发的最佳实践(3/4)
  2. 结果方程模型(SEM)的理论和基本实现过程
  3. 对Java基本数据类型的再思考
  4. 张亚勤院士谈“智能计算新趋势”
  5. PHP面试题:PHP.ini路径?
  6. UVA 11552——Fewest Flops
  7. Gnuplot 简单使用
  8. windows + cmake + vs2019 编程
  9. 3-docker 架构和底层技术简介
  10. 【nowcoder-2017校招真题】保留最大的数
  11. xp访问服务器显示没有权限,xp无法访问2008R2共享
  12. oracle 如何修改字符集 update prop,ORACLE 修改字符集
  13. LitJson使用范例
  14. android viewholder静态,Android listview viewholder
  15. Linux·串口编程
  16. yuv和rgb画面质量谁好_图像色彩空间YUV和RGB的差别
  17. 小话设计模式(十三)职责链模式
  18. ehvierwer登录与不登录_微信上不去了怎么办,峰哥教你微信登录不上去的办法
  19. java panel函数_Java中的JPanel的函数setBounds()的用法误解
  20. hive与Oracle数据库的相互同步

热门文章

  1. 利用iperf网络带宽测试工具看多线程及多核编程
  2. “家贼”倒卖“征途”源代码 13万元卖给识货人
  3. 3721彻底清除方法
  4. 时代的榜样---女生要做到的8荣8耻
  5. 黑莓合约价格:电信 BlackBerry 9930
  6. 单片机 -定时/计数器的初始化编程及应用
  7. js中fn()和fn()()的区别
  8. 2022建筑电工(建筑特殊工种)考试题库及答案
  9. 缺陷的严重程度(Severity)
  10. c++结构体总结(结构体定义,结构体数组,结构体指针,结构体嵌套结构体,结构体做函数参数,结构体中 const使用场景)