首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > PB >

很简单的有关问题:调用动态库是先搜寻本地的还是system32上的

2013-01-05 
很简单的问题:调用动态库是先搜寻本地的还是system32下的想问一下调用动态库的话,系统查找动态库的顺序。比

很简单的问题:调用动态库是先搜寻本地的还是system32下的
想问一下调用动态库的话,系统查找动态库的顺序。
比如说我要调用msvcp60.dll。
1、是先去搜索环境变量中定义路径中的动态库,还是先搜素程序所在文件夹有无此动态库?
2、加入程序所在文件夹有msvcp60.dll,system32下本来也是有msvcp60.dll的,那么此时调用的话是怎么个调用法?如果只调用其中的一个动态库,那两个路径相同动态库版本不同为什么还会造成程序运行问题?
3、一些系统安装时就有的动态库,是不是不同操作系统还会版本不同,比如说WIN2003与WIN XP。因为发现有些程序运行在XP没问题但是一跑到2003就可能有问题。
[解决办法]
然后按下列顺序搜索 DLL: 1、当前进程的可执行模块所在的目录。 2、当前目录。 3、Windows 系统目录。GetSystemDirectory 函数检索此目录的路径。 4、Windows 目录。GetWindowsDirectory 函数检索此目录的路径。 5、PATH 环境变量中列出的目录。


对于不同的操作系统,因为提供的基础dll不一样,所以最好是把所有的dll都打上,这样多种操作系统的情况下会稳定得多~~
[解决办法]
如果要想可靠性高些,打包的时候把稳定可靠的都打上,不要去找路径,直接跟可执行文件放一起。
[解决办法]

引用:
想问一下调用动态库的话,系统查找动态库的顺序。
比如说我要调用msvcp60.dll。
1、是先去搜索环境变量中定义路径中的动态库,还是先搜素程序所在文件夹有无此动态库?
2、加入程序所在文件夹有msvcp60.dll,system32下本来也是有msvcp60.dll的,那么此时调用的话是怎么个调用法?如果只调用其中的一个动态库,那两个路径相同动态库版本不同为什么还会造成程序运行问题?
……

不管是本地还是系统的.
建议你把需要的DLL都放到执行文件所在的目录.

热点排行