2Pascal-新时代的Pascal

 找回密码
 立即注册
搜索
热搜: fastreport
查看: 4476|回复: 19
打印 上一主题 下一主题

RAD10 新建 dll so 动态库 win 安卓 fmx 动态调用 教程 V1.0.2015.1031

[复制链接]

90

主题

293

帖子

8万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
81869
跳转到指定楼层
楼主
发表于 2018-3-11 15:19:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
京东购书支持本站
重点是文章是 2015年 d10 刚刚发布之后做的,现在应该已经不适用了。
也许,你会更成功,也许更失败。


Please note: This is Chinese document, if you don't understand, please go to Confucius College(孔子学院) to study.

(****************************************************)
(*                         *)
(*     编写:爱吃猪头肉 & Flying Wang     *)
(*      上面的版权声明请不要移除。      *)
(*          2015-10-30          *)
(*                         *)
(*          禁止发布到城通网盘。        *)
(*                         *)
(****************************************************)


RAD10 新建 dll so 动态库 win 安卓 fmx 调用 教程

第一步
新建 4 个目录
DLL 目录放 DLL 工程
SO 目录放 so 工程
Dll So Common 目录放 动态库的具体 代码。
Fmx Test 目录放 FMX 跨平台测试工程。

第二步
新建一个 DLL工程 名叫 TestDll 保存工程 到 DLL 目录
新建一个 安卓服务工程 也叫 TestDll 保存工程 到 SO 目录(有高手说,可以新建一个 DPK 也就是 Package 工程,平台选 安卓,效果一样)。
将 安卓 TestDll 自带的 unit1 移除 并删除。
将安卓 TestDll 的 dpr 的代码修改 为

program TestDll;

uses
  System.SysUtils,
  System.Classes
;

{$R *.res}

begin

end.

简单的说,就是 安卓服务 的代码,都不要了,换 DLL 的代码。

第三步
新建一个空 Unit1 。
保存到Dll So Common 目录,在两个 TestDll 中 都将 该 unit 加入到工程中。

第四步
在 Unit1 中 写 DLL 函数接口。具体代码 请查看 后面给出的 DEMO。
然后 DLL 和 SO 版本的 TestDll 工程都编译出来。
建议 Release 和 Debug 各编译一份。

第五步
新建一个 FMX 跨平台 工程,例如保存到 Fmx Test 目录。

在你需要 使用 DLL 的地方。
写下 类似如下的  DLL 引用 代码。
[mw_shl_code=delphi,true]const
  LibName = {$IFDEF MSWINDOWS} 'TestDll.dll'; {$ELSE}
              {$IFDEF ANDROID} 'libTestDll.so'; {$ELSE} 'libTestDll.dylib'; {$ENDIF ANDROID}
            {$ENDIF MSWINDOWS}
  Fun_TestAdd_Name = 'TestAdd';
type
  Fun_TestAdd = function(a,b: Integer): Integer;
  {$IFDEF MSWINDOWS} stdcall; {$ELSE} cdecl; {$ENDIF}[/mw_shl_code]

可以参考 后面 给出的 DEMO。

第六步
在 工程的 部署界面。
给 安卓的 Debug 和 Release 都加入 'libTestDll.so ,并且设置 部署路径为:library\lib\armeabi-v7a\

  两个分别都加。


注意输出的路径都是 library\lib\armeabi-v7a\
注意:上图的so 文件名错误,应该没有 2 。

第七步
可以在 WIN 和 安卓 平台 运行了。


附源码
使用 源代码,之前,请检查 部署(Deployment 界面)的路径是否正确。
一般都不正确。请点。

最后一个 按钮,可能图标会不一样。

按照这个选。
然后在



里面去掉这个 3 个。


然后 按照前面说的 将 libTestDll.so 加入到部署中。


最后附上所有的代码。
游客,如果您要查看本帖隐藏内容请回复


附2
目前发现 TEncoding.ANSI UTF8 在 安卓下 无法工作。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
(C)(P)Flying Wang
回复

使用道具 举报

2

主题

11

帖子

274

积分

中级会员

Rank: 3Rank: 3

积分
274
沙发
发表于 2018-3-11 16:01:09 | 只看该作者
京东数码购物支持本站
学习中,认真学习中,特别认真学习中
回复 支持 反对

使用道具 举报

1

主题

52

帖子

2185

积分

金牌会员

Rank: 6Rank: 6

积分
2185
板凳
发表于 2018-3-12 02:56:53 | 只看该作者
京东数码购物支持本站
感谢老猫,学习中
回复 支持 反对

使用道具 举报

0

主题

11

帖子

64

积分

注册会员

Rank: 2

积分
64
地板
发表于 2018-4-4 11:31:36 | 只看该作者
京东数码购物支持本站
认真学习中,特别认真学习中
回复 支持 反对

使用道具 举报

0

主题

1

帖子

4

积分

新手上路

Rank: 1

积分
4
6#
发表于 2018-7-31 09:49:11 | 只看该作者
京东数码购物支持本站
什么东西啊
回复 支持 反对

使用道具 举报

0

主题

16

帖子

180

积分

注册会员

Rank: 2

积分
180
8#
发表于 2018-11-9 00:12:47 | 只看该作者
京东数码购物支持本站
你这么优秀!!!!!!!!!!!!!!!!!!
回复 支持 反对

使用道具 举报

0

主题

2

帖子

8

积分

新手上路

Rank: 1

积分
8
9#
发表于 2018-11-14 07:33:07 | 只看该作者
京东数码购物支持本站
过来向高手学习。
回复 支持 反对

使用道具 举报

0

主题

9

帖子

36

积分

新手上路

Rank: 1

积分
36
10#
发表于 2018-12-2 06:22:03 | 只看该作者
京东数码购物支持本站
新手努力学习中,感谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|新时代Pascal论坛

GMT+8, 2024-4-28 03:46 , Processed in 0.070278 second(s), 24 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表