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等对象所确定的目录而改变。
应用程序所在的目录, 该进程从中启动的目录,即程序文件自身所在的目录。和当前工作目录是不同的。
猜你喜欢
- 电脑更新了英伟达驱动出现游戏啊掉帧,甚至电脑蓝屏的情况。多半是因为显卡驱动程序和系统不兼容的原因,只要回退到以前的显卡驱动版本即可。那么英伟
- 最新型号的 Apple TV 有一个加长的屏幕键盘,需要您横向滚动。如果您更喜欢旧 Apple TV 熟悉的矩形网格视图,可以进行设置,来看
- Excel中,需要将重点的内容用颜色来高亮显示。在给框选的单元格添加颜色后,就看不到网线格线了,但我们需要用到网格线,如何才能显示出来呢?下
- 针对编辑工作中异地审稿和校对所遇到的问题,简要介绍2014迅捷在线PDF转换成Word转换器和Word文件的排版和修改的重要性,详细阐述将方
- 很多朋友已经开始用Word 2007替代Word 2003等低版本,不过Word2007默认使用*。docx格式作为文档保存格式,考虑到交流
- 需要注意的是默认情况下,Word不支持直接backspace让中文和英文同在一行。那如何才能让Word支持呢? 具体操作如下: 选中所有段落
- Mac无法本地打开RAR文件,因此您需要一个应用 Unarchiver。Unarchiver是在Mac上打开RAR所需的唯一应用程序。它比本
- Win8.1系统IE浏览器网页排版发生错乱怎么办?本文将提供IE浏览器网页排版发生错乱的两种解决方法供大家了解,希望可以帮助到大家 
- excel表格中如何将横行转换成竖行?近期在民企工作的网友就遇到个一个难题,excel表格中如何将横行转换成竖行?如何做,这个问题困扰着他,
- 三线表是非常常用的一种表格,一般情况下,本科毕业论文和科研论文都要求表格使用三线表。我个人建议使用word制作三线表,因为这样不仅操作简单,
- Excel中可以输入分数,分子与分母用斜线隔开。步骤:1.选中单元格2.点击数字区旁边的斜箭头3.选择分数4.输入数字注:如果直接输入1/3
- 给重要的Excel设置密码是保护文档的基本方式,而很多用户在设置完密码后,自己却忘记密码。出现这种情况,通过破解密码软件是找回密码的主要方式
- 许多人在打印表格时会遇到这个问题,第一页有表头,翻页后就没有了,那么怎么固定表头呢?其实很简单,本文就为大家介绍方法许多人在打印表格时会遇到
- 许多用户在使用电脑的时候经常会将一些文件放在电脑桌面,而这样很容易导致将电脑中的文件误删。如果用户不小心删除了电脑中的文件,也可以通过还原来
- 在写作时,发现文章标题设置没按求,又不想一个一个改。一个统一修改标题格式的方法。接下来小编举例简单的例子告诉大家Word全文标题格式的设置方
- Mac版Motion 5怎么为视频添加文本?Motion 5是一款非常强大的运动图形工具,可帮你便捷地制作影院级 2D、3D 和 360°
- 如果活动单元格位于某个已定义名称的区域中,可以用下面的VBA代码来选择这个区域,同时在状态栏中给出提示。Public Sub SelectR
- mac系统做得非常人性化,系统启动项是基于系统上的每个用户的,而不是基于整个系统的。如何设置应用程序的开机启动?下面用经常使用的微信为例,分
- 我们在日常生活中经常都会接触到各种各样的Excel表格,比如收集居民信息的表格,统计产品售卖情况的表格,各种比赛成绩表格,国考省考成绩表格等
- 今天打开邮件看到一位朋友给我发来一封邮件,全文如下(略有删改):最近在学数学模型,用规划求解来计算。以前用Excel XP,知道在工具中加载