作者janyfor (你哪位ㄚ)
看板LinuxDev
标题[问题] 不同 Library 共用变数
时间Thu Dec 29 00:27:30 2011
各位好,
有点难以叙述 画个简图表示
Android Framework
libX(extern pointer) libY(extern pointer)
↖↘ ↗↙
libhardware ------------------> pointer
↑ ↓
HAL
原先系统的流程会经由 libX <-> libhardware <-> HAL
後来因应了一些需求, 我而外了加上一些东西在 framework,
并且利用 libY 去存取 HAL, 然而从简图上的表达,
是要与 libX "共用" HAL, 而非又产生出另一份 HAL.
我的想法是在 libhardware 宣告一 pointer , libX 以及 libY 分别透过 extern 去存取.
由於 libX 是系统的预设流程, 所以 libX 获得正确的 HAL 物件之後,
将该物件的位置设定到 pointer 上, 之後 libY 便能够利用此 pointer 进入 HAL.
但目前执行起来, libY 的并无法进入到 HAL(pointer 依然是 NULL)
行为上看起来, 似乎是编译完连结时 libX 与 libY 的 pointer 位置不相同.
请问在这样的条件之下, 有其他的方式可以共用相同变数吗?
可以的话应该怎麽弄呢?
谢谢
OS Version: Android 2.3.5
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.68.139.138
※ 编辑: janyfor 来自: 219.68.139.138 (12/29 00:32)
1F:推 cobrasgo:有AndroidDev板,你要不要到那边问,也许比较快 12/29 17:33
2F:推 mcauther:你从 framework 下来应该是 JNI 吧 ?JNI 里面似乎有机制 12/29 20:01
3F:→ mcauther:可以共用同一个 object 12/29 20:02
4F:→ janyfor:我有转一份过去问; 是 JNI 12/29 21:22
5F:→ jserv:透过 Binder 是另一种一劳永逸的解法,不过有很多准备工作 12/30 01:36
6F:推 cobrasgo:jserv大神说的我有兴趣,请问有连结可以参考吗? 12/30 13:05
9F:→ jserv:简单来说,要脱离使用 symbol 的层次,特别在这类需要存取 01/06 02:56
10F:→ jserv:共用资源的状况,透过 Binder 来操作一致的介面,会灵活些 01/06 02:57
11F:推 cobrasgo:Thank you very much 01/06 15:15