导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2018/3/10 15:47:13
标题:
在android studio 中调用 delphixe10写的 so库
浏览:1180
加入我的收藏
楼主:
小弟成心请教各位高人,如何在android studio中调用 delphi xe10 上写的 TAndroidService里面的某个方法,或都窗体? 不胜感激
----------------------------------------------
-
作者:
2018/3/10 15:52:31
1楼:
当然不一定是要 TAndroidService , 也可以是delphi 写一个so文件,里面有个窗口, 但是怎么样在android studio里面调用这个窗口呢?
----------------------------------------------
-
作者:
2018/3/10 22:54:34
2楼:
你先告诉我 delphi 的 动态库 工程,怎么支持 安卓平台吧。 我新建一个 动态库,只支持 WIN MACOS LINUX 这 3个。没安卓啊。 而且 跨平台的 动态库 没 UI 的。不能出现 窗体。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/3/10 23:03:05
3楼:
wang_80919 兄弟 但是,这个TAndroidService编译出来的是SO格式的,那么肯定是要第三方来调用的 如果不能有UI,那么怎么样调用其中的方法呢?
----------------------------------------------
-
作者:
2018/3/10 23:25:05
4楼:
TAndroidService 从来就没说支持 UI 啊。 没有 UI 难道就不能调用了? 人家 叫 安卓服务。服务都不懂吗? 而且,网上一堆的 安卓服务 DEMO。 EMB 的 只不过是 封装了接口,换 DELPHI 去实现服务的具体功能而已。 所以 安卓服务 怎么用 怎么写,都和 网上的 DEMO 没什么区别。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/3/11 8:54:50
5楼:
TO 飞汪 1.你在XE里新建一个Package , 然后在右边 Target Platforms里可以建立一个 for Android 平台输出类型 2. 有人在android 成功 Delphi调用Android的.so文件 https://zhidao.baidu.com/question/1860759219961110107.html 3.我想讨论的是如何在Android Studio里调用这个Delphi写的SO,当然,Delphi 写的TAndroid Service肯定 是可以的。 if not Tfile.Exists(TPath.GetDocumentsPath+'/libserial_port.so') then begin showmessage(TPath.GetDocumentsPath+'/libserial_port.so not found'); end; Handle1:=LoadLibrary(pchar(TPath.GetDocumentsPath+'/libserial_port.so'));//动态装入库 if Handle1<>0 then //找到库 begin fun1:=GetProcAddress(Handle1,'openport'); //搜索库函数Add,并返回函数指针 if Assigned(fun1) then begin ...... 复制代码 至于上面的GetDocumentsPath 或者别的目录也可以 参看TPath的说明和so文件存放目录有关系 另外值得注意的事传递的字符串 xe中是双字节的。
----------------------------------------------
-
作者:
2018/3/11 8:58:51
6楼:
当然,如果delphi写的SO,全世界都能调用,那是真的强~!
----------------------------------------------
-
作者:
2018/3/11 8:59:53
6楼:
老子,代码都公开了,你还问个屁。 5 楼的,你语文是体育老师教的吗? 你给的知道的标题你是不是看不懂? 昨天测试了代码 2年多过去了。 依然 TEncoding.ANSI UTF8 不能用。 最基础的 字符串 编码转换都无法简单的进行。不具备实用价值。 当然,如果你打算绕过所有的坑,那么 跨平台的 dll 是没问题的,让别的语言调用,也是没问题的。 例如 只做 底层的 运算 或 数据处理,不处理任何 string (PAnsiChar 等不能用),更不考虑 UI。
----------------------------------------------
(C)(P)Flying Wang
作者:
2018/3/11 9:31:52
7楼:
问题来了,既然已经用AS开发了,为什么还要考虑delphi写的so.多此一举吧。
----------------------------------------------
山外青山楼外楼,能人背后有能人弄..