dll如何调用DLL

Changefish 2010-04-25 11:14:55
想将dll外面再包装一层dll,该如何做,谢谢
...全文
193 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
guanking 2010-04-26
  • 打赏
  • 举报
回复
首先要讲清楚静态调用和动态调用的区别。
1 静态调用,在pas文件中直接指定DLL和定义调用函数,在程序开始运行时,就会自动寻找该DLL,并载入内存。
A 即是无论你用不用,都要载入到内存中。
B 如果程序运行时,找不到要载入的DLL,就会报错,无法运行。
C 通常应用在于系统功能关联密切,必须而且经常使用的DLL。

2 动态调用,在程序段中使用LoadLibrary('mydll.dll')加载。
A 在程序开始运行时,不会自动加载,只有在使用时,再通过LoadLibrary加载。
B 因此即使没有该DLL,程序的其他功能还可以使用。只是要用到该DLL,发现没有才会报错。
C 通常应用于对系统功能关联不密切,使用频率低的DLL。当然也有节省内存,优化性能的特点。
D Freelibrary与LoadLibrary要成对使用,是为了保证调用的内存空间有效释放。


例子:

var

Handle:Thandle;

addc:Taddc;

begin

Handle:=LoadLibrary('Testdll.dll');//加载dll

@addc:=GetProcAddress(Handle,'Test'); //取Test函数入口地址,大小写敏感。

if @addc<>nil then

begin

edit1.Text:=IntToStr(addc(10));//参数传递,这里直接用10

end;

Freelibrary(Handle);//从内存释放dll

end;
Harryfin 2010-04-26
  • 打赏
  • 举报
回复
跟在主程序里面的写法没啥区别
huangheguyun 2010-04-26
  • 打赏
  • 举报
回复
加载到USE UNIT一样进行调用。
hongss 2010-04-26
  • 打赏
  • 举报
回复
把DLL当作一个Unit来调用
YFLK 2010-04-26
  • 打赏
  • 举报
回复
就象主程序调用DLL那样写代码就行
huboy 2010-04-26
  • 打赏
  • 举报
回复
跟一般调用没区别。。。
sibike 2010-04-25
  • 打赏
  • 举报
回复
dll外再包层dll,你是指的往dll里再写入资源吗?
  • 打赏
  • 举报
回复
很简单啊,在新dll中直接调用老dll就可以
shuaialang 2010-04-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 sonicer 的回复:]
跟普通的调用没啥区别吧,
[/Quote]

希望跟你说的一样。。。

一会晚上试试。
林石公 2010-04-25
  • 打赏
  • 举报
回复
跟普通的调用没啥区别吧,
iqyely 2010-04-25
  • 打赏
  • 举报
回复
关注下。没明白啥意思。
shuaialang 2010-04-25
  • 打赏
  • 举报
回复
精辟的提问,我也有此需求啊,可能,哈哈,不过还没动手做到那一步。。总能解决的、

5,388

社区成员

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

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