DELPHI开发LINUX包

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

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

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

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

不论加载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包的更多相关文章

  1. DELPHI开发LINUX桌面程序

    DELPHI开发LINUX桌面程序 DELPHI官方目前为止尚不能开发LINUX桌面程序. 但三方控件FmxLinux(商业控件)是可以的.网上有破解版本.

  2. DELPHI开发LINUX插件架构的程序

    DELPHI开发LINUX插件架构的程序 DELPHI可以开发LINUX配置型插件架构的程序,并且这一套插件架构,同样适用于MSWINDOWS和MAC. 配置插件: 根据配置,动态加载插件:

  3. DELPHI开发LINUX的动态库

    DELPHI开发LINUX的动态库 WINDOWS的动态库是.dll,这个大家都知道. LINUX也有动态库,扩展名是.so,现在DELPHI也能开发LINUX的动态库哦. DELPHI对LINUX的 ...

  4. 使用Delphi开发linux应用

    对于很多喜欢使用delphi做开发的人都希望delphi能够支持linux平台的开发,终于在delphi10.2版本中,delphi开始支持linux平台的开发了.在这里写一下Linux开发环境的配置 ...

  5. 使用FMXlinux 开发linux 桌面应用

    自从delphi 10.2 开始正式支持linux  开发来,大家一直关心为什么官方没有使用FMX来支持LInux 的桌面开发? 其实原因无非就几点: 1.Linux 大部分是应用还是服务端的,桌面应 ...

  6. linux 下安装开发组件包

    最初安装redhat 时, 系统自己装的,只安装了base 包,在开发过程中,需要不停的安装某个需求包,   图省事,安装光盘下的开发组件包: 在安装光盘下,,,用命令: yum grouplist ...

  7. 使用delphi 10.2 开发linux 上的Daemon

    delphi 10.2 支持linux, 而且官方只是支持命令行编程,目地就是做linux 服务器端的开发. 既然是做linux服务器端的开发,那么普通的命令行运行程序,然后等待开一个黑窗口的方式就 ...

  8. Delphi 10.2可以开发Linux桌面应用了

    原始地址 https://community.embarcadero.com/blogs/entry/firemonkey-on-linux    Delphi Linux编译器已经发布,现在无需等待 ...

  9. (转载)Delphi开发经验谈

    Delphi开发经验谈 开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件. ...

随机推荐

  1. iptables-2基本语法结构

    1.规则的概念先说说规则的概念,然后再通俗的解释它.规则:根据指定的匹配条件来尝试匹配每个流经此处的报文,一旦匹配成功,则由规则后面指定的处理动作进行处理:那么我们来通俗的解释一下什么是iptable ...

  2. p2.BTC-数据结构

    hash pointers:哈希指针,除了保存值的地址,还要存这整个区块的内容的hash值.这样就既能访问到值,还能确定访问的值有没有被篡改. 一 Blockchain Block chain is ...

  3. kali linux 虚拟机克隆之后版本回退问题

    今天在做虚拟机的克隆的之后发现 之前kali linux 系统内核升级后的更改全部又回退到之前的版本,也就是说之前安装的软件被删除了,现在需要自己重新安装一遍  ,(我滴个乖乖哟) 这里就不放图了.

  4. prometheus operator 部署

    prometheus operator 部署自定义记录 环境: k8s 1.11集群版本,kubeadm部署 docker 17.3.2版本 Centos 7系统 阿里云服务器 operator 源码 ...

  5. CentOS7编译安装httpd-2.4.41 php7.3

    CentOS7编译安装httpd-2.4.41 php7.3 安装参考环境: CentOS Linux release 7.5.1804 (Core) 一.安装依赖包 httpd安装的依赖包 # yu ...

  6. 大数据技术之Hadoop3.1.2版本HA模式

    大数据技术之Hadoop3.1.2版本HA模式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Hadoop的HA特点 1>.主备NameNode 2>.解决单点故障 ...

  7. ccze - A robust log colorizer(强大的日志着色器)

    这些程序遵循通常的GNU命令行语法,长选项以两个破折号(` - ')开头.选项摘要如下. -a, - argument PLUGIN = ARGUMENTS              使用此选项将AR ...

  8. ARP欺骗之ettercap图形化界面

    ARP欺骗原理: 在每台主机中都有ARP缓存表,缓存表中记录了IP地址与MAC地址的对应关系,而局域网数据传输依靠的是MAC地址(网络设备之间互相通信是用MAC地址而不是IP地址) 一.ARP欺骗 工 ...

  9. 【ocata】计算节点的 neutron 报错

    挂起/关闭实例时,/var/log/neutron/linuxbridge-agent.log中报错,但不影响使用 -- :: INFO neutron.plugins.ml2.drivers.age ...

  10. java(Hello World) 常量 变量和注意事项

    一.java的入门程序 java语言的简单介绍 关于java语言的特点:(1) 简单性和c++相比,java没有头文件.指针.运算符重载等,java语言相当于是一个比较纯净版的c++.(2) 面对对象 ...