请问装载时和运行时调用dll有什么区别?

longagoer 2003-10-28 10:26:49
二者除了在具体的代码上不一样外,在调用机制上有什么区别呢?
如果dll版本发生变化,哪一种方式的客户程序需要重新编译?
谢谢
...全文
27 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ztenv 2003-11-05
  • 打赏
  • 举报
回复
先谢谢ma7ht(飞天马)这位老兄了!!
静态的也没有必要和客户程序放在同一目录下,你可以把动态链接库放在任一的目录下,在implementation部分:
function函数名(形式参数列表):返回值类型;external'路径+动态链接库名';
//即把动态链接库的函数声明为Application的外部函数.以后每当你用到这个声明的函数时,就像用Delphi自己的函数一样会出现提示的.
不过通常情况下,一般把动态链接库放在当前目录中,以方便调用!
ma7ht 2003-11-03
  • 打赏
  • 举报
回复
lianshaohua(连少华) 说的对。
------------------------------------------------
好像动态dll调用可以通过LoadLibrary(Path)来找到dll文件,那么静态的呢?是不是必须与客户程序放在同一目录呢?
----------对所在目录没有要求
benxie 2003-11-03
  • 打赏
  • 举报
回复
gzing
RamjetZhang 2003-11-03
  • 打赏
  • 举报
回复
目录:如果没有写绝对路径的话(visual studio那个烂烂的VB api浏览器就这个德行):
大概是以下顺序:
0. 你指定的目录;(好比程序所在文件夹\DLLS\)
1. 程序所在目录;
2. windows核心目录,比如nt下的system32;以及其它次核心目录比如c盘根目录, winnt目录等等;
3. windows的路径所列出的;好比delphi的bin目录或者visual studio的bin目录;

p.s.刚才输入法坏掉乱敲了键。
RamjetZhang 2003-11-03
  • 打赏
  • 举报
回复
目录:如果没有写绝对路径的话:
大概是以下顺序:
0. 你指定的目录;
1. 程序所在目录;
2. windows核心目录,比如nt下的system32;以及
DelphiBird 2003-11-03
  • 打赏
  • 举报
回复
景泰调用的时候,一般会在EXE当前目录和系统目录寻找;
动态调用就可以由loadlibrary 的参数搞定了
longagoer 2003-11-03
  • 打赏
  • 举报
回复
再问:两种方式对dll文件的所在目录有特别的要求吗?
好像动态dll调用可以通过LoadLibrary(Path)来找到dll文件,那么静态的呢?是不是必须与客户程序放在同一目录呢?谢谢
longagoer 2003-11-02
  • 打赏
  • 举报
回复
装载时调用,windows怎么能自动找到dll呢?
还有装载时和运行时有什么区别呢?谢谢
ztenv 2003-11-02
  • 打赏
  • 举报
回复
主要的区别在这里呀:
静态dll在你的应用程序装载到内存时你的dll也就装到的内存,占用了内存空间,也就是在没有用到dll时,dll也占着内存空间,是不是有一点浪费呀?
动态dll调用是在你用到时才临时装到内存,用完之后马上就释放了所占的资源,当然也取决你对dll的装入,
micher_yan 2003-10-28
  • 打赏
  • 举报
回复
其实dll文件不论动态调用还是静态调用,文件放哪儿都无所谓了,关键是windows能找到就行,个人认为区别在于dll加载的时机,使用上并没有什么不同
longagoer 2003-10-28
  • 打赏
  • 举报
回复
是不是静态调用的dll文件必须放在客户程序的目录中,而动态调用的dll文件就无所谓了,可以用loadlibrary来搞定?除此之外,二者还有什么区别吗?请指正
tangyh521 2003-10-28
  • 打赏
  • 举报
回复
一种是静态调用和一种是动态调用,两种都不用重新编译,只要你的DLL接口保持一直就可以了
delphimo 2003-10-28
  • 打赏
  • 举报
回复
静态和动态都需要更新程序!

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧