网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > DELPHI > 正文
Delphi for Linux中应用共享对象库
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/12
下载{$ArticleTitle}原创论文样式

本文用通俗易懂的语言介绍Linux平台上共享对象库(SO)的基本概念及主要优点,通过剖析在Delphi for Linux中应用SO与在Delphi for Windows中应用DLL的异同,以编程实例讲述了Linux平台的SO库文件的组成、SO库文件的函数重载、特殊编译指令、采用Delphi for Linux创建SO的编程规则、使用前的Linux系统设置,以及在Delphi for Linux中用隐式或显式链接方法装入和使用SO函数的基本方法、经验及技巧,并对应用SO可能出现的问题进行了探讨和分析。

共享对象库基本概念

Delphi for Linux是Borland公司推出的基于Linux平台的、面向对象的可视化开发工具,是目前Linux平台上很好的应用开发工具。Delphi for Linux也称Kylix。大家用Kylix开发Linux应用程序时,可能使用过Linux操作系统本身带的大量SO文件。SO是一种特殊的运行文件,包含若干方法、对象和资源,它不能直接运行,但可以被Kylix应用程序或其它可执行文件动态调用。SO文件扩展名为.so,编译前源文件扩展名为.dpr。本文所举例子均在Red Hat Linux 7.3及Kylix 3.0环境下调试编译通过,并可正常运行。

图1是Kylix主程序与SO库的层次关系图。从中可看出使用SO库有以下几个优点。




图1 Kylix主程序与SO库的层次关系图


◆ 多个Kylix程序或它的多个单元文件可通过接口共用一个SO库文件。另一方面,某一个Kylix程序,可通过多个接口使用多个SO库文件。这样,SO变成一种可共用的资源,实现真正的“资源共享”,大大缩小了Kylix应用程序的执行代码,增强了软件的可重用性。

◆ 将SO文件作为Kylix应用程序的公共调用模块设计时,由于其独立于应用程序,软件升级时只需修改SO库文件及编译SO,无需更改及重编译Kylix应用主程序

◆ 不仅可使用Kylix编写SO库,还可使用C或C++等常用语言来编写,只要遵循特定的接口规范。

共享对象库的创建

1.SO库文件的构成

SO库文件和Kylix标准单元文件的内部结构基本相同,也有声明、实现及初始化部分。区别之一在于SO库只是其它程序可以调用的方法(包括函数及过程)集合。区别之二库程序以library关键字而非project开头启动其项目文件;库程序包含有exports语句,其列出要向外部提供的导出函数及过程。下面是SO库文件代码的简单例子,用以说明其构成。

library MyFirstSO;
uses
  SysUtils, classes ; { Delphi for Windows 中引用类库为Windows }
function Add (A:Char;B:Char):Integer;cdecl;overload;
begin
  Result := Ord (A) + Ord (B) ;
end;
function Add (A:Integer;B:Integer):Integer;cdecl;overload;
begin
  Result := A + B ;
end;
function Double (N:Integer):Integer;cdecl
begin
  Result := N * 2;
end;
exports
  Add (A:Integer;B:Integer),
  Add (A:Char;B:Char) name ''AddChar'',
  Double;



2.SO库文件中的函数重载

SO库也可以使用重载函数(即多个函数使用相同名称、不同参数),使用时需在重载的函数声明后标上overload指令。Kylix可以用原名称导出一个重载函数,在exports从句中表示其参数表。若要导出多个重载函数,则要在exports从句中用name字句指定不同名称,以区别重载。这可从上面的例子MyFirstSO中看出,Add是重载函数,为调用时区分,一个用原函数声明Add导出,另一个用AddChar导出。

3.SO库的特殊编译指令

编译后生成的SO库运行文件使用lib前缀和.so扩展名。考虑到实际命名规则与版本和支持符号链,Kylix在Object Pascal语言中引入了几个特殊编译指令,这些在Delphi中没有什么意义。库源文件MyFirstSO.dpr编译后产生的执行文件为libMyFirstSO.so。

◆ $SOPREFIX 改变名称前缀,默认为lib(正常库)或bpl(Kylix包)
  • 下一篇资讯: 隐藏我的电脑中驱动器
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号