• 微课视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 程序设计
  • 信息安全
微课江湖
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 微课视频
  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统
您的位置:首页 > 操作系统 >Windows > Windows用来定位DLL的搜索路径个人经验总结

Windows用来定位DLL的搜索路径个人经验总结

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-05-12

佚名 通过本文向大家介绍了windows桌面路径,windows xp桌面路径,windows找不到路径,windows 路径,windows 相对路径等相关知识,希望对您有所帮助,也希望大家多多支持微课江湖
《程序员面试宝典》一书中写到,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等对象所确定的目录而改变。

应用程序所在的目录, 该进程从中启动的目录,即程序文件自身所在的目录。和当前工作目录是不同的。 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • Windows用来定位DLL的搜索路径个人经验总结
  • Windows 注册表系统软件默认安装路径修改方法

相关文章

  • 2017-05-12windows7系统找不到显示桌面图标(无需窗口最小化也可看得到)
  • 2017-05-12Win10系统下如何更改计算机的名称让其更具个性
  • 2017-05-12win7如何打开摄像头?win7系统的摄像头打开方法图解
  • 2017-05-12XP升级到Vista失败后无法启动只显示黑屏的解决方法
  • 2017-05-12预装Win8怎么开启Defender(Metro下提示已关闭)
  • 2017-05-12Win7系统中如何设置禁止在播放视频时运行屏保界面
  • 2017-05-12如何节约Vista系统的硬盘空间? 八个方法让您的Vista硬盘空间最大化
  • 2017-05-12新版Win10 Build 10051截图泄露:新增通用应用程序
  • 2017-05-12Msconfig关闭Win 7开机启动项的图文方法步骤
  • 2017-05-12windows 10语音包怎么安装与激活?

文章分类

  • bios
  • 系统安装
  • 系统进程
  • Windows
  • LINUX
  • RedHat/Centos
  • Ubuntu/Debian
  • Fedora
  • Solaris
  • 麒麟系统
  • 红旗Linux
  • 苹果MAC
  • 注册表
  • 其它系统

最近更新的内容

    • windows7下连接蓝牙鼠标的详细步骤(图文教程)
    • Win10 Mobile 10530预览版来啦 下周发布
    • windows7自动登录默认帐号的设置方法
    • 盗版windows系统windows更新始终异常怎办么?
    • Win10创造者更新Build 14997英文企业版ISO镜像下载地址泄露
    • windows XP停止服务后还能用吗 XP Mode(XP兼容模式)可以解决这个问题
    • win10正式版ie浏览器在哪里?win10找回IE浏览器的教程
    • 教你如何获取Win10图标升级到Win10正式版的方法
    • win7网上邻居为什么无法使用?win7系统网上邻居无法使用的解决方法
    • win8安装及管理个性化主题图文教程

关于我们 - 联系我们 - 免责声明 - 网站地图 - 投诉建议

©CopyRight 2015-2017 www.weikejianghu.com Inc All Rights Reserved. 微课江湖 版权所有