「14.动态链接库编程」2.创建动态链接库

2.创建动态链接库

在 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 后,其他应用程序必须使用别名调用该过程或函数。

  • resident 选项

使用该选项,当动态链接库加载时,输出信息始终保存在内存中,当其他应用程序使用该例程时,可以比利用别名扫描动态链接库入口减少时间和系统开销,因此,该选项特别适合于那些经常被调用的过程或函数。

示例:创建一个实现角度转换为弧度功能的动态链接库。代码如下:

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 条评论) “”
   
验证码:

相关文章

推荐文章