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;

  

 

原文地址:https://www.cnblogs.com/hnxxcxg/p/11290716.html

时间: 2024-11-10 07:38:37

DELPHI开发LINUX包的相关文章

使用Delphi开发linux应用

对于很多喜欢使用delphi做开发的人都希望delphi能够支持linux平台的开发,终于在delphi10.2版本中,delphi开始支持linux平台的开发了.在这里写一下Linux开发环境的配置. (1)安装ubuntu系统 首先在虚拟机安装ubuntu系统,我这里使用的是64位桌面版:ubuntu16.04.2 (2)安装SDK 在ubuntu中打开terminal终端,输入指令:sudo add-apt-repository ppa:ubuntu-sdk-team/ppa 然后再输入:

DELPHI开发LINUX的动态库

WINDOWS的动态库是.dll,这个大家都知道. LINUX也有动态库,扩展名是.so,现在DELPHI也能开发LINUX的动态库哦. DELPHI对LINUX的开发支持越来越强. 原文地址:https://www.cnblogs.com/hnxxcxg/p/11290661.html

使用delphi 10.2 开发linux 上的Daemon

delphi 10.2 支持linux, 而且官方只是支持命令行编程,目地就是做linux 服务器端的开发. 既然是做linux服务器端的开发,那么普通的命令行运行程序,然后等待开一个黑窗口的方式就 太low了(目前就有个别语言大咖,经常在Windows 上开个黑窗口,看起来非常恶心),那么如果 避免这个尴尬的问题? 其实Linux 下也有类似windows 服务的功能,Linux Daemon 就是其中的一种方式,命令行运行后 直接返回,同时在后台建立一个同样的进程.接受客户端的访问.常见的一

对于delphi for linux心存梦想的同学,彻底醒醒吧

Borland 曾经多次做市场调查,很多人呼吁推出delphi for linux.可是直到kylix发展到第三版,borland才明白:一个内置C编译器环境并与之关系紧密的免费OS,没有人愿意花钱去购买一款开发工具为它开发应用.很多时候,对于delphi for linux的需求表现,其实仅仅是windows程序员对于linux可能的市场崛起大约会带来的淘汰感,而幻想无需费力,就可以应对linux开发,其实这些人并没有任何linux开发计划.Borland感觉自己被涮了,于是坚决终止kylix

使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点

KbmMW 中支持基于UDP的消息广播,也支持TCP/IP hub/spoke 方式,还有 基于UDP或者TCP/IP 的点对点的消息传输. 1.基于UDP的消息广播 根据UDP  的工作原理,在同一个网段里面,可以发布广播包.这样发布者只需要发布一次, 消息就可以被同一网段上的所有订阅者收到.这样大大的降低了网络带宽.这个方式的最大缺点是 无法直接跨越网段,如果要跨越网段,就需要建立一个Gateway. Gateway 就是一个程序,连接两个网段. 它接受第一个网段的广播消息,然后再广播到第二

跟马哥学linux (lesson 6)linux包管理程序rpm & yum

一.rpm 1.什么是RPM RPM 是 Red Hat Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理:在Fedora .Redhat.Mandriva.SuSE.YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用. 2.rpm语法格式 1)查询,验证           rpm {-q|--query} [select-options] [query-options] rpm {-V|--v

利用 PlxSdk 工具包开发 Linux 下 PCI 设备驱动

最近实验室需要做一个 Linux 与 FPGA 之间的快速接口,考虑高速的特性,选择了 PCI 接口实现. FPGA 选择 altera 的 EP2C20F484C8 PCI 接口芯片选择 PLX8311 操作系统选择 ubuntu10.04 1.Linux 检测 PCI 将板卡插入到主机 PCI 插槽内,开机,通过 lspci 命令可以检测到当前系统下所有的 PCI 设备. 02:00.0 PCI bridge: PLX Technology, Inc. PEX 8111 PCI Expres

C#开发Linux守护进程

C#开发Linux守护进程 Linux守护进程是Linux的后台服务进程,相当于Windows服务,对于为Linux开发服务程序的朋友来说,Linux守护进程相关技术是必不可少的,因为这个技术不仅仅是为了开发守护进程,还可以拓展到多进程,父子进程文件描述符共享,父子进程通讯.控制等方面,是实现Linux大型服务的基础技术之一. 去年我也曾写了一篇关于守护进程的帖子,名字叫<.NET跨平台实践:用C#开发Linux守护进程>,这篇文章的的确确实现了一个Daemon,不过,它有一个弱点,不能运行多

如何开发Linux内核?

?? 如何开发Linux内核? 推荐这篇文章: http://www.tldp.org/LDP/lkmpg/2.6/html/lkmpg.html 下面是在Ubuntu下的输出: [email protected]  # makemake: Warning: File `Makefile' has modification time 11 s in the futuremake -C /lib/modules/3.13.0-24-generic/build M=/root modulesmake