在 Delphi 中,通过主菜单 File|New|Other 命令,在弹出的 New Items 对话框中,选择 Dynamic-link Library 图标,单击 OK 按钮,系统自动创建一个动态链接库项目。
在 Lazarus 中,选择 Project|New Project 命令,在弹出的对话框中选择 Library,即可创建一个动态链接库项目。
动态链接库的基本结构示例:
library TestLibrary;{$mode objfpc} {$H+}uses SysUtils;// library subroutinefunction cvtString(strIn : string) : PChar; cdecl; begin cvtString := PChar(UpperCase(strIn)); end;// exported subroutine(s)exports cvtString;end.
在动态链接库代码中,接口都是通过 Exports 关键字输出的,在动态链接库项目中,将要输出的函数或过程,列在 Exports 语句中,就可以输出。
Exports 的形式:
Exports 例程名;
Export 例程名 index 索引值;
index 用来指示一个函数或过程的顺序号,取值为 1 ~ 32767。如果不使用index,则由编译器按顺序自动进行分配,使用index可以加速应用程序的调用过程。
Exports 例程名 name 别名;
name 后指出该过程或函数的输出名。使用 name 后,其他应用程序必须使用别名调用该过程或函数。
使用该选项,当动态链接库加载时,输出信息始终保存在内存中,当其他应用程序使用该例程时,可以比利用别名扫描动态链接库入口减少时间和系统开销,因此,该选项特别适合于那些经常被调用的过程或函数。
示例:创建一个实现角度转换为弧度功能的动态链接库。代码如下:
library Project1;{$mode objfpc}{$H+}uses Classes { you can add units after this };function FunAngToArc(d: double):double; stdcall;begin result:=d/180.0*pi;end;Exports FunAngToArc;beginend.
在上面的代码中,函数声明的后面的关键字 stdcall 是不能缺少的,指定了函数的调用方式。
留言与评论(共有 0 条评论) “” |