VS2010使用Dll的顺序
来源:互联网 发布:mac os 10.8.5 升级 编辑:程序博客网 时间:2024/06/11 09:27
1. 首先,我用VS2010创建了一个Dll工程。
编译连接后,便在Debug目录下得到了.lib,.dll文件。
2. 然后,我再创建了一个win32控制台程序,使用这个dll文件,我使用的方式是装载时调用,所以我需要.h,.lib,.dll文件。
2.1 我将这3个文件复制到这个程序的目录下,然后在程序中就可以直接使用了。
2.2 在运行的过程中,我发现运行时,使用的dll文件不是当前程序目录下我复制过来的dll文件,而是利用原来Dll工程中Debug下的dll文件。
2.3 然后,我将原创建dll工程下Debug目录下的dll文件删除掉后,再执行一下这个控制台程序,发现此时调用的dll就是我复制到这个程序目录下的dll文件了。
所以我猜测lib文件中应该有记录原创建dll的目录信息,所以在使用lib的时候,程序会从lib文件中记录的dll路径去找dll来加载,从而执行;而当发现这个记录路径下没有预想的dll文件后,系统就会从程序当前路径找相应的dll,于是就找到了我们复制过来的dll文件,于是程序便可以执行了。
lib文件中记录有原dll文件信息有一个好处,那就是只要我不改变库文件接口,而是更新原接口的操作,这样重新编译生成新的dll文件,这样就不需要每次更新库接口操作后,都要将新的.lib和.dll文件复制到需要使用的地方,这样就很方便。当然这只是在本机调试时比较方便,如果已经发布了dll,那么每次更新dll,都要给用户发布这个新的dll文件。如果dll文件中增加了新的接口函数或改变了接口名称,那么就要利用新的.h文件和.lib文件,重新构建生成应用程序,然后将这个“升级版的”应用程序和新的dll发布给用户,进行更新。
相关问题:
一.程序执行时,系统装在dll文件的路径顺序?lib文件记录路径——>程序当前路径——>??
参考地址:http://msdn.microsoft.com/zh-cn/library/7d83bc18(VS.80).aspx
通过隐式和显式链接,Windows首先搜索“已知 DLL”,如 Kernel32.dll 和 User32.dll。Windows然后按下列顺序搜索 DLL:
1. 当前进程的可执行模块所在的目录。
2. 当前目录。
3. Windows系统目录。GetSystemDirectory 函数检索此目录的路径。
4. Windows目录。GetWindowsDirectory 函数检索此目录的路径。
5. PATH环境变量中列出的目录。
二.用dll构建程序时,如何处理dll更新升级问题?这个问题比较大、复杂,以后用的时候,慢慢总结吧。
- VS2010使用Dll的顺序
- VS2010使用Dll文件搜索顺序
- DLL的部署和使用[VS2010-2012]
- VS2010创建DLL和使用DLL
- C#使用vs2010封装DLL
- VS2010创建并使用DLL
- VS2010创建并使用DLL
- VS2010中使用CL快速 生成DLL的方法
- VS2010下 DLL的创建和使用总结
- 使用vs2010生成64位的dll文件
- .dll 的搜索顺序
- 利用VS2010生成DLL文件及DLL中函数和全局变量的使用
- VS2010 调试DLL 的办法
- vs2010导出dll的问题
- VS2010 在共享 DLL 中使用 MFC
- (一)vs2010 新建、使用dll
- VS2010下 VLC axvlc.dll 使用
- vs2010下编译DLL库和使用
- 【JAVA】求和
- YUV视频格式到RGB32格式转换的速度优化 上篇
- 助你成为百万富翁的10句箴言
- 高斯混合模型知识与程序
- c++ 11新标准
- VS2010使用Dll的顺序
- YUV视频格式到RGB32格式转换的速度优化 中篇
- 什么时候用GET?什么时候用POST?
- java对大文件的处理思路
- eclipse部署Android时候提示:WARNING: Application does not specify an API level requirement!
- YUV视频格式到RGB32格式转换的速度优化 下篇
- VisualBox虚拟机 linux 命令行下连接网络
- fprint函数与print函数
- linux work queue及并发可管理工作队列