当前位置: 主页 >> 手机行情

代表Windows用来定位DLL的搜索路径

来源:  点击次数:0  时间:2020-09-17

《程序员面试宝典》一书中写到,windows搜索dll文件的顺序为:但央行是否会使用加息手段(1)内存(2)knowndlls(3)清单与.local(4)应用程序目录(5)当前工作目录(6)系统目录(7)路径变量

总觉得不太明白,遂查资料确认一下。

查msdn如下:

通过隐式和显式链接,Windows 首先搜索已知 DLL,如 l 和 l。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等对象所确定的目录而改变。

应用程序所在的目录, 该进程从中启动的目录,即程序文件自身所在的目录。和当前工作目录是不同的。



丹东牛皮癣医院有哪些
丽江白癜风好的医院
碧凯保妇康栓治疗效果