请问装载时和运行时调用dll有什么区别? 二者除了在具体的代码上不一样外,在调用机制上有什么区别呢?如果dll版本发生变化,哪一种方式的客户程序需要重新编译?谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 一种是静态调用和一种是动态调用,两种都不用重新编译,只要你的DLL接口保持一直就可以了 是不是静态调用的dll文件必须放在客户程序的目录中,而动态调用的dll文件就无所谓了,可以用loadlibrary来搞定?除此之外,二者还有什么区别吗?请指正 其实dll文件不论动态调用还是静态调用,文件放哪儿都无所谓了,关键是windows能找到就行,个人认为区别在于dll加载的时机,使用上并没有什么不同 装载时调用,windows怎么能自动找到dll呢?还有装载时和运行时有什么区别呢?谢谢 主要的区别在这里呀: 静态dll在你的应用程序装载到内存时你的dll也就装到的内存,占用了内存空间,也就是在没有用到dll时,dll也占着内存空间,是不是有一点浪费呀? 动态dll调用是在你用到时才临时装到内存,用完之后马上就释放了所占的资源,当然也取决你对dll的装入, 再问:两种方式对dll文件的所在目录有特别的要求吗?好像动态dll调用可以通过LoadLibrary(Path)来找到dll文件,那么静态的呢?是不是必须与客户程序放在同一目录呢?谢谢 景泰调用的时候,一般会在EXE当前目录和系统目录寻找;动态调用就可以由loadlibrary 的参数搞定了 目录:如果没有写绝对路径的话:大概是以下顺序:0. 你指定的目录;1. 程序所在目录;2. windows核心目录,比如nt下的system32;以及 目录:如果没有写绝对路径的话(visual studio那个烂烂的VB api浏览器就这个德行):大概是以下顺序:0. 你指定的目录;(好比程序所在文件夹\DLLS\)1. 程序所在目录;2. windows核心目录,比如nt下的system32;以及其它次核心目录比如c盘根目录, winnt目录等等;3. windows的路径所列出的;好比delphi的bin目录或者visual studio的bin目录;p.s.刚才输入法坏掉乱敲了键。 lianshaohua(连少华) 说的对。------------------------------------------------好像动态dll调用可以通过LoadLibrary(Path)来找到dll文件,那么静态的呢?是不是必须与客户程序放在同一目录呢?----------对所在目录没有要求 先谢谢ma7ht(飞天马)这位老兄了!!静态的也没有必要和客户程序放在同一目录下,你可以把动态链接库放在任一的目录下,在implementation部分:function函数名(形式参数列表):返回值类型;external'路径+动态链接库名';//即把动态链接库的函数声明为Application的外部函数.以后每当你用到这个声明的函数时,就像用Delphi自己的函数一样会出现提示的. 不过通常情况下,一般把动态链接库放在当前目录中,以方便调用! 数据行排序 代码实现数据插入 双CPU问题(分不够可以再加) 各位朋友,我知道你们只关心技术,其实我也一样 dcom 服务器程序的一个问题 怎样将做好的程序打包? 我想学delphi 不知道它的优势和缺点都有哪些呢? 多谢! 在Delphi中如何使用控件组? 简单问题:解决即结贴 DelphiXE8使用ios模拟器编译时报System Error.Code 2错误 有关listbox多选记录的总题 修改STRINGGRID的列宽?
还有装载时和运行时有什么区别呢?谢谢
静态dll在你的应用程序装载到内存时你的dll也就装到的内存,占用了内存空间,也就是在没有用到dll时,dll也占着内存空间,是不是有一点浪费呀?
动态dll调用是在你用到时才临时装到内存,用完之后马上就释放了所占的资源,当然也取决你对dll的装入,
好像动态dll调用可以通过LoadLibrary(Path)来找到dll文件,那么静态的呢?是不是必须与客户程序放在同一目录呢?谢谢
动态调用就可以由loadlibrary 的参数搞定了
大概是以下顺序:
0. 你指定的目录;
1. 程序所在目录;
2. windows核心目录,比如nt下的system32;以及
大概是以下顺序:
0. 你指定的目录;(好比程序所在文件夹\DLLS\)
1. 程序所在目录;
2. windows核心目录,比如nt下的system32;以及其它次核心目录比如c盘根目录, winnt目录等等;
3. windows的路径所列出的;好比delphi的bin目录或者visual studio的bin目录;p.s.刚才输入法坏掉乱敲了键。
------------------------------------------------
好像动态dll调用可以通过LoadLibrary(Path)来找到dll文件,那么静态的呢?是不是必须与客户程序放在同一目录呢?
----------对所在目录没有要求
静态的也没有必要和客户程序放在同一目录下,你可以把动态链接库放在任一的目录下,在implementation部分:
function函数名(形式参数列表):返回值类型;external'路径+动态链接库名';
//即把动态链接库的函数声明为Application的外部函数.以后每当你用到这个声明的函数时,就像用Delphi自己的函数一样会出现提示的.
不过通常情况下,一般把动态链接库放在当前目录中,以方便调用!