作者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