DELPHI开发LINUX包

我们知道,有了包的存在,开发插件架构的程序,才成为可能 。

DELPHI在WINDOWS里面的包的扩展名是.bpl。

在LINUX里面的包的扩展名是.o。

怎样在LINUX里面加载.o的包?

不论加载WINDOWS的包,还是加载LINUX的包,都是使用LoadPackage()函数加载。

function LoadPackage(const Name: string; AValidatePackage: TValidatePackageProc): HMODULE;

{$IFDEF POSIX}

var

DLErrorMsg: string;

M: TMarshaller;

{$ENDIF POSIX}

begin

{$IFDEF MSWINDOWS}

Result := SafeLoadLibrary(Name);

{$ENDIF MSWINDOWS}

{$IFDEF POSIX}

Result := HMODULE(dlopen(M.AsAnsi(Name, CP_UTF8).ToPointer, PkgLoadingMode));

{$ENDIF POSIX}

if Result = 0 then

begin

{$IFDEF POSIX}

DLErrorMsg := string(dlerror);

{$ENDIF POSIX}

raise EPackageError.CreateResFmt(@sErrorLoadingPackage,

[Name,

{$IFDEF MSWINDOWS}SysErrorMessage(GetLastError){$ENDIF MSWINDOWS}

{$IFDEF POSIX}DLErrorMsg{$ENDIF POSIX}]);

end;

try

InitializePackage(Result, AValidatePackage);

except

{$IFDEF MSWINDOWS}

FreeLibrary(Result);

{$ENDIF MSWINDOWS}

{$IFDEF POSIX}

dlclose(Result);

{$ENDIF POSIX}

raise;

end;

end;

procedure UnloadPackage(Module: HMODULE);

begin

FinalizePackage(Module);

{$IFDEF MSWINDOWS}

FreeLibrary(Module);

{$ENDIF MSWINDOWS}

{$IFDEF POSIX}

dlclose(Module);

InvalidateModuleCache;

{$ENDIF POSIX}

end;

delphi开发LINUX程序,DELPHI开发LINUX包相关推荐

  1. 微信开发小程序云开发云存储中文件下载地址实时读取文件内容实时下载地址解读

    微信开发小程序云开发云存储中文件下载地址解读 最近公司要我开发一款具备电子签名功能的微信小程序,虽然我是Android开发程序员,但...老总要求了那我就去做呗,好在微信小程序还算入门容易,网上有很多 ...

  2. 单片机上运行linux程序代码,在Linux下烧录51单片机

    原标题:在Linux下烧录51单片机 *本文作者:LEdge1,本文属 FreeBuf原创奖励计划,未经许可禁止转载. 背景 我一直在学习Linux 系统,但是最近还要学习51单片机,所以在Linux ...

  3. 整个linux程序的框架,Linux兼容Win32程序,一个框架、两个界面

    Linux兼容Win32程序,"一个框架.两个界面" Linux兼容Win32程序,"一个框架.两个界面" [日期:2007-07-19] 来源:Linux公社 ...

  4. 安卓 c 语言开发环境搭建,用C++语言开发Android程序 配置开发环境

    如果你是一个C++语言的死忠,你喜欢C++语言到了偏执的状态,如果不想学习Java语言,或者你很讨厌Java语言,如果你认为Java虚拟机的内存占用太多和执行低效.如果你过度关注Andoird程序的执 ...

  5. linux 程序占内存,linux概念之程序占用内存

    1.在linux下,查看一个运行中的程序,占用了多少内存,一般的命令有 (1). ps aux: 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存. RSS列 表示, 程序占用了多少物理内存 ...

  6. linux 程序占内存,linux下,一个运行中的程序,究竟占用了多少内存

    1. 在linux下,查看一个运行中的程序, 占用了多少内存, 通常的命令有php (1). ps aux:html 其中  VSZ(或VSS)列 表示,程序占用了多少虚拟内存.linux RSS列 ...

  7. 后台运行linux程序,后台运行Linux程序的方法

    后台运行Linux程序,可以通过crontab设置,这种方法一般用来让一个程序定时运行,也可以通过./test &这样在程序末尾加上一个&使程序在后台运行. 编写代码,下面我将参考ht ...

  8. 安卓跑linux程序_Android 运行 Linux 可执行程序

    /**************************************************************************** * Android 运行 Linux 可执行 ...

  9. linux程序无法启动,Linux无法启动解决方法[阮胜昌]

    2007-10-22 22:27 linux中修复GRUB 呵呵,最近2003系统老出问题,主要是防火墙导致很多聊天软件都用不了@|@哎,有时候甚至把MBR文件也弄没了没办法重新安装GRUB么???? ...

最新文章

  1. c++数据结构之广义表
  2. java去除不为null,java – 选择特定字段不为NULL的所有记录
  3. 《跟我一起写Makefile》读书笔记(1)
  4. 【Android】17.1 Bound Services基本概念
  5. Java 并发编程之创建线程,启动和常用方法
  6. 帝国理工:如何用 AI 解决 80% 专科医生担忧的心律装置移植手术难题
  7. GTK+图形化应用程序开发学习笔记(五)—组装盒、组合表、固定容器构件
  8. git revert 之后怎么撤销_Git 如何优雅地回退代码
  9. 使用Python调用Netconf进行配置
  10. matlab找不到vs编译器
  11. 什么原数据更容易平稳_时序数据处理难题攻略(上)
  12. AutoCAD2018_输出与打印
  13. H3C交换机常用命令大全
  14. 免费专业的linux web应用防火墙国内排名推荐
  15. 2018-2019-1 20165320 《信息安全系统设计基础》 缓冲区溢出漏洞实验
  16. JT/T 808-2019、JT/T 809-2019文档分享
  17. 基于物联网的智慧农业监测系统(前端界面有web端和微信小程序端)
  18. 20P37 Premiere预设200种文字标题介绍动画合集包 200 Titles Collection下载
  19. matlab开方分布上分位点,概率密度分布函数和上分位点的数值计算
  20. Message中obtain()与recycle()

热门文章

  1. 使用Kotlin开发Android应用初体验
  2. Android官方开发文档Training系列课程中文版:Android的安全建议
  3. 使网页成黑白色调的滤镜(转)
  4. python元祖和文件用法举例
  5. 《Head First 设计模式》专题上线
  6. 设计模式系列漫谈之一 - 观察者模式
  7. linux的基础知识——TCP异常断开
  8. python选择某一行_Python常用语法有哪些 如何快速入门Python开发
  9. java 垂直走马灯多行,Android实现图文垂直跑马灯效果
  10. win8 oracle10g,win7/win8 下安装oracle10g的方法