社区
Delphi
帖子详情
请问装载时和运行时调用dll有什么区别?
longagoer
2003-10-28 10:26:49
二者除了在具体的代码上不一样外,在调用机制上有什么区别呢?
如果dll版本发生变化,哪一种方式的客户程序需要重新编译?
谢谢
...全文
27
13
打赏
收藏
请问装载时和运行时调用dll有什么区别?
二者除了在具体的代码上不一样外,在调用机制上有什么区别呢? 如果dll版本发生变化,哪一种方式的客户程序需要重新编译? 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
打赏
举报
回复
静态和动态都需要更新程序!
pb
调用
dll
实例
--- 动态链接库(Dynamic-Link Library),简称
DLL
,是基于Windows程序设计的一个非常重要的组成部分。使用
DLL
有许多优点:(1)使用
DLL
的动态连接不是将库代码拷贝,只在程序中记录函数的入口点和接口,在程序执行
时
才将库代码装入内存,如果有多个程序使用相同的
DLL
,也只需将
DLL
在内存中
装载
一次,节省了内存开销。(2)
DLL
是基于Windows的程序模块,它不仅包含可执行代码,还可以包含数据,各种资源,扩大了库文件的使用范围。(3)对于一个大型的、不断更新的应用程序,可以将许多重复的功能写成
DLL
,用主程序
调用
,这样既减少了开发的工作量,又提高了访问速度。(4)
DLL
丰富了PowerScript语言的编程能力,可以使用PowerScript函数集之外的函数。例如:用户可能编写图象处理系统来浏览文件并将其存放于数据库,该应用需使用浏览器,但用PowerScript语言未提供做这类工作的函数,为了操纵设备,需要与设备本身环境通信,该环境一般是厂商提供的动态链接库。(5)
DLL
独立于编程语言,大多数WINDOWS编程环境都允许主程序
调用
DLL
中的函数。即可以用VC++、VB、PowerBuilder、Delphi、汇编语言等建立
DLL
,然后在不同语言编制的应用程序中
调用
它。下面用一个实例说明通过
DLL
实现PowerBuilder程序和VC++程序之间的连接。
C++
DLL
相关 word文档
dll
创建使用实例
——动态链接库(
dll
)是包含共享函数库的二进制文件,可以被多个应用程序同
时
使用。建立应用程序的可执行文件
时
,不必将
DLL
连接到应用程序中,而是在
运行
时
动态
装载
DLL
,
装载
时
DLL
被映射到
调用
进程的地址空间中。通常我们在
调用
DLL
时
所需的
DLL
文件必须位于以下三个目录之一: ——(1)Windows的系统目录:\windows\system; ——(2)DOS中path所指出的任何目录; ——(3)程序所在的目录;
简单的从
DLL
中
装载
MDIFORM 的例子,
DLL
和主程序都有
简单的从
DLL
中
装载
MDIFORM 的例子
DLL
和主程序的代码都有, 采用带包编译的方式 若要
调用
其他的功能
dll
,也可以
调用
公共的
dll
纯资源
DLL
(加载和
调用
)
用
DLL
装载
资源,然后在EXE中
调用
。 在有多个进程进行资源共享的情况下,可以节约空间
dll
文件动态 静态
装载
方法例程源码下载
两种方法
调用
dll
文件中的函数,动态 静态
装载
附源码和说明文件,转载请注明出处
Delphi
5,387
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章