知识大全 Delphi 中动态链接库(dll)的建立和使用[2]

Posted 函数

篇首语:留得青山在,不怕没柴烧。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi 中动态链接库(dll)的建立和使用[2]相关的知识,希望对你有一定的参考价值。

Delphi 中动态链接库(dll)的建立和使用[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  三 DLL库的访问

  访问DLL库有两种方式 一种是静态引用 另一种是动态引用

  用静态引用这种方法装入DLL要做两件事情 为DLL 库创建一个输入单元 以及

  用USES把输入单元连接到要使用DLL 函数的程序模块中 为DLL库创建的输入单元与普通的单元的区别仅在于 在它的接口处声明的过程 函数 并不在它的实现部分给出真正的实现代码 而是用external关键字把过程 函数的实现细节委托给外部DLL模块

  external命令的使用语法如下

  procedure /function 过程/函数名;external DLL模块名;

  下面给出为上面创建的minmax DLL库写的输入单元源文件testdll pas 从中可看出输入单元 与一般 单元的一些差别 代码如下所示

以下是引用片段   unit testdll; interface uses function Min (X  Y: Integer): Integer; function Max (X  Y: Integer): Integer; implementation function Min; external  minmax DLL ; function Max; external  minmax DLL ; end   一个应用程序若想调用minmax DLL中的函数 只须在其uses语句中加入testdll 单元即可

  动态装入DLL 要用到Windows的三个API函数 Loadlibrary Freelibrary和GetprocAddress loadlibrary函数用来装入DLL库 其调用格式如下

  function loadlobrary (DLLfileName Pchar): THandle:

  当不再需要一个DLL库时 应调用FreeLibrary函数将其释放 以空出宝贵的内存资源 其调用格式如下

  procedure FreeLibrary (Libmodule:THandle)

  Libmodule 为由LoadLibrary调用得到的DLL库句柄 在用loadlobrary 函数装入某个DLL库和调用FreeLibrary释放该DLL库之间的程序段中 可以使用该DLL库中的过程和函数 具体使用方法是 用GetprocAddress函数把DLL库中函数的地址传递给程序中某个函数变量 再用该变量实现DLL函数的调用 GetprocAddress函数声名如下

以下是引用片段 function GetprocAddress (Libmodule:THandle:procname:pchar):TFarProc:如下例所示 type TTimeRec = record Second: Integer; Minute: Integer; Hour: Integer; end; TGetTime = procedure(var Time: TTimeRec); THandle = Integer; var Time: TTimeRec; Handle: THandle; GetTime: TGetTime; begin Handle := LoadLibrary( DATETIME DLL ); if Handle <>   then begin @GetTime := GetProcAddress(Handle   GetTime ); if @GetTime <> nil then begin GetTime(Time); with Time do WriteLn( The time is   Hour   :  Minute   :  Second); end; FreeLibrary(Handle); end; end;

  在调用动态链接库时应注意 所需动态链接库须与应用程序在同一目录或Windows System 目录下

  动态链接库是 Windows下程序组织的一种重要方式 使用动态链接库可以极大地保护用户在不同开发工具 不同时期所做的工作 提高编程效率

cha138/Article/program/Delphi/201311/25065

相关参考

知识大全 Delphi中动态链接库两种调用方式的比较

Delphi中动态链接库两种调用方式的比较  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!一动态链接

知识大全 动态链接库编程(一)[2]

DELPHI基础教程:动态链接库编程(一)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 动态链接库编程(二)[2]

DELPHI基础教程:动态链接库编程(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 动态链接库编程(一)[4]

DELPHI基础教程:动态链接库编程(一)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 动态链接库编程(一)[3]

DELPHI基础教程:动态链接库编程(一)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 动态链接库编程(一)[1]

DELPHI基础教程:动态链接库编程(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 动态链接库编程(二)[3]

DELPHI基础教程:动态链接库编程(二)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 动态链接库编程(二)[4]

DELPHI基础教程:动态链接库编程(二)[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 动态链接库编程(二)[1]

DELPHI基础教程:动态链接库编程(二)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 在VC中链接动态链接库的方法简要说明

在VC中链接动态链接库的方法简要说明  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!方法一windo