DELPHI开发LINUX包
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包的更多相关文章
- DELPHI开发LINUX桌面程序
DELPHI开发LINUX桌面程序 DELPHI官方目前为止尚不能开发LINUX桌面程序. 但三方控件FmxLinux(商业控件)是可以的.网上有破解版本.
- DELPHI开发LINUX插件架构的程序
DELPHI开发LINUX插件架构的程序 DELPHI可以开发LINUX配置型插件架构的程序,并且这一套插件架构,同样适用于MSWINDOWS和MAC. 配置插件: 根据配置,动态加载插件:
- DELPHI开发LINUX的动态库
DELPHI开发LINUX的动态库 WINDOWS的动态库是.dll,这个大家都知道. LINUX也有动态库,扩展名是.so,现在DELPHI也能开发LINUX的动态库哦. DELPHI对LINUX的 ...
- 使用Delphi开发linux应用
对于很多喜欢使用delphi做开发的人都希望delphi能够支持linux平台的开发,终于在delphi10.2版本中,delphi开始支持linux平台的开发了.在这里写一下Linux开发环境的配置 ...
- 使用FMXlinux 开发linux 桌面应用
自从delphi 10.2 开始正式支持linux 开发来,大家一直关心为什么官方没有使用FMX来支持LInux 的桌面开发? 其实原因无非就几点: 1.Linux 大部分是应用还是服务端的,桌面应 ...
- linux 下安装开发组件包
最初安装redhat 时, 系统自己装的,只安装了base 包,在开发过程中,需要不停的安装某个需求包, 图省事,安装光盘下的开发组件包: 在安装光盘下,,,用命令: yum grouplist ...
- 使用delphi 10.2 开发linux 上的Daemon
delphi 10.2 支持linux, 而且官方只是支持命令行编程,目地就是做linux 服务器端的开发. 既然是做linux服务器端的开发,那么普通的命令行运行程序,然后等待开一个黑窗口的方式就 ...
- Delphi 10.2可以开发Linux桌面应用了
原始地址 https://community.embarcadero.com/blogs/entry/firemonkey-on-linux Delphi Linux编译器已经发布,现在无需等待 ...
- (转载)Delphi开发经验谈
Delphi开发经验谈 开发环境-------- Delphi 7是一个很经典的版本,在Win2000/XP下推荐安装Delphi 7来开发软件,在Vista下推荐使用Delphi 2007开发软件. ...
随机推荐
- redis3集群管理
以下操作基于redis3.X版本:Redis集群存储原理:Redis 集群使用数据分片(sharding),而非一致性哈希(consistency hashing)来实现,一个 Redis 集群包含 ...
- docker-compose设置mysql初始化数据库的字符集
version: '3' services: mysql: image: mysql:5.7.24# volumes:# - ./mysqld.cnf:/etc/mysql/mysql.conf.d/ ...
- Android笔记(五十八)Android总结:四大组件——Activity篇
什么是Activity Activity是一种包含用户界面的组件,主要用于和用户进行交互,一个APP通常由多个Activity组成. 每个Activity都对应一个布局文件,通过setContentV ...
- java安全相关知识
基本概念 JVM:java虚拟机,Java编译程序将生成Java虚拟机上可运行的目标代码,使得Java程序可以再不同平台不加修改的运行.JVM包含完善的硬件架构,主要分为五大模块-类装载器子系统.运行 ...
- Makefile学习一
上次随着信号学习告一段落,也标志着linux系统编程相关的知识学完了,而学了这么多知识点,是需要用一个综合的项目来将其进行串起来的,这样学习的技术才会不那么空洞,所以接下来会以一个实际例子来综合运用下 ...
- 《The One!团队》:BETA Scrum metting1
项目 内容 作业所属课程 所属课程 作业要求 作业要求 团队名称 < The One !> 作业学习目标 (1)掌握软件黑盒测试技术:(2)学会编制软件项目总结PPT.项目验收报告:(3) ...
- 《BUG创造队》作业8:软件测试与Alpha冲刺(第二天)
项目 内容 这个作业属于哪个课程 2016级软件工程 这个作业的要求在哪里 实验十二 团队作业8:软件测试与ALPHA冲刺 团队名称 BUG创造队 作业学习目标 (1)掌握软件测试基础技术.(2)学习 ...
- PL/sql配置相关
可以安装oracle之后,打开PL/sql之后,自动找到oracle的路径以及数据库连接. 或者:安装oracle客户端,手动在PL/sql中配置oic以及oracle主目录的位置,并且配置好C: ...
- Bootstrap是什么意思?
Bootstrap是一组用于网站和网络应用程序开发的开源前端(所谓“前端”,指的是展现给最终用户的界面.与之对应的“后端”是在服务器上面运行的代码)框架,包括HTML.CSS及JavaScript的框 ...
- 使用echarts生成海友网企业全国分布地图
不分类别的效果 不同分类的分布效果图 从海友网获取各个企业名单保存进mysql cmfishhelper.py 从下列网址得到各个企业名片的网址保存进表cmfish cds = get_cds() h ...