Windows用来定位DLL的搜索路径个人经验总结
发布时间:2022-03-26 04:29:36
这篇文章主要介绍了Windows用来定位DLL的搜索路径,有不明白的朋友可以参考下《程序员面试宝典》一书中写到,windows搜索dll文件的顺序为:(1)内存(2)knowndlls(3)清单与.local(4)应用程序目录(5)当前工作目录(6)系统目录(7)路径变量
总觉得不太明白,遂查资料确认一下。
查msdn如下:http://msdn.microsoft.com/zh-cn/library/7d83bc18.aspx
通过隐式和显式链接,Windows 首先搜索“已知 DLL”,如 Kernel32.dll 和 User32.dll。Windows 然后按下列顺序搜索 DLL:
当前进程的可执行模块所在的目录。
当前目录。
Windows 系统目录。GetSystemDirectory 函数检索此目录的路径。
Windows 目录。GetWindowsDirectory 函数检索此目录的路径。
PATH 环境变量中列出的目录。
隐式链接有时称为静态加载或加载时动态链接。显式链接有时称为动态加载或运行时动态链接。
在隐式链接下,使用 DLL 的可执行文件链接到该 DLL 的创建者所提供的导入库(.lib 文件)。使用 DLL 的可执行文件加载时,操作系统加载此 DLL。客户端可执行文件调用 DLL 的导出函数,就好像这些函数包含在可执行文件内一样。
在显式链接下,使用 DLL 的可执行文件必须进行函数调用以显式加载和卸载该 DLL,并访问该 DLL 的导出函数。客户端可执行文件必须通过函数指针调用导出函数。
“已知的 DLL”(非正式名称)的功能指由内核的模块加载器进行特殊处理的 DLL(动态链接库)列表。当加载器发现具有指向已知的 DLL 的加载时动态链接的程序时,就会立即使用已知的副本,而忽略通常情况下应用于模块加载的搜索算法。
那上面所写的内存是什么道理呢?搜索动态库首先是内存,如果内存中存在就不需要加载,否则需要搜索到后加载到内存中。dll的主要优点也是节省内存和减少交换操作。很多进程可以同时使用一个 DLL,在内存中共享该 DLL 的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows 必须在内存中加载库代码的一个副本。
感觉.local文件像是配置之类的,没查到相关资料,不清楚。
当前工作目录 (Current Working Directory), 一般来说,每个进程都有一个与之相关联的分级文件系统(hierarchical file system)下的目录,称之为该进程的当前工作目录。如果程序刚进入main入口处的时候,当前工作目录其实就是程序启动的目录,但是当前工作目录是可以通过程序进行设置或者随着OpenFileDialog、SaveFileDialog等对象所确定的目录而改变。
应用程序所在的目录, 该进程从中启动的目录,即程序文件自身所在的目录。和当前工作目录是不同的。


猜你喜欢
- 在wps文字中编辑文档的时候,可能需要在其中输入公式,那么,怎样输入呢?对于刚从其它版本转型过来的应该就不会太懂吧,没关系,下面就让小编告诉
- word上下标怎么同时打?需要在文档中同时输入上下标,如何操作?1、上下标同时输入选中要设置为上标的内容,点击开始-段落-中文版式,点击下拉
- 怎么恢复iphone被误删的文件和通讯录?我们在使用iphone手机的时候,会不小心将其中的文件通讯录等误删掉。冷静下来,我们现在要做的是找
- PDF文件怎么随意调换页面的顺序?pdf文件想要自定义调整一下页面的顺序,将重要的文件提前,该怎么调整呢?下面我们就来看看pdf文件调整页面
- Win11小组件提示加载此内容时出现错误怎么解决?其实方法很简单,今天小编教大家使用CMD命令卸载小组件后重新安装来解决这个问题,一起看看吧
- 1,打开设置窗口你可以点击状态栏上的小扳手,或者在状态栏上面右键菜单即可看到【设置属性】选项,点击后即可打开。输入法默认的设置一般都是效率最
- 在epic平台上玩游戏的小伙伴不少在打开还没体验游戏的时候就遇到了卡在登录界面进不去的情况,那么该怎么样去解决呢?下面就给你们带来了详细方法
- 网易云音乐一直是很多用户喜欢的一款音乐软件,在使用的过程中用户可以看到里面的音乐资源是丰富的,很好的满足了用户的需求,给用户带来了很不错的使
- PPT是常用于制作课件、项目的办公软件,想要在PPT上制作一款艺术字体,要怎么操作呢?下面小编就给大家带来PPT设置艺术字效果的教程,需要的
- 如何在支付宝忘刮奖后重新刮奖?大家都知道支付宝在付款后会出现一个刮奖的界面,但是有些时候会因为某些原因将刮奖界面给关掉了,那么问题来了,当刮
- 这篇文章主要介绍了Win7系统无法打开.exe文件解决方法,提示“无法找到C:\***.exe文件"解决方法,需要的朋友可以参考下
- 有些小伙伴在使用win7系统开机的时候发现由于前一次的异常关机导致了现在开机一直卡在启动修复情况,这时候怎么也无法进入系统中,因而小伙伴必须
- 小编最近发现有小伙伴们想知道解决玩英雄联盟fps低的方法是什么,你们不要好奇小编是怎么知道的,因为小编是算出来的。哈哈,不皮了,说正事儿。下
- Macbook的充电器如果不小心线容易断,今天给它找个保护装置吧如果这些问题你都碰到过,设计癖今天给你的Mac充电器请了个保镖回来。不然,换
- win10打开电脑d盘没有了?有的用户在打开我的电脑之后,发现自己的d盘盘符没有了,无法进行相应的操作,那要怎么把被隐藏的d盘调出来呢?来看
- 有时引用的单元格区域内没有数据,Excel仍然会计算出一个结果“0”,这样使得报表非常不美观,看起来也很别扭,那么在Excel中如何用IF函
- 笔记本正版win10系统怎么重装?笔记本电脑永久之后,系统难免会出现卡顿的现象,此时就需要重装系统进行修复,那么正版win10如何重装系统呢
- 微软宣布正在开发最新的Win11系统22H2版本,并将在这个版本的系统内改进UI及性能等方面,微软系统是目前使用人数最多的一个系统,为用户提
- 怎样备份win2003的软raid信息,确实是一个让人头疼的问题,于是本人搜集整理下备份win2003的软raid信息的方法,需要了解的朋友
- 新手接触Mac时,打开的就是桌面。大多数人使用Mac前都接触过Windows,或者已经很熟悉Windows了,所以遇到Mac时,