[問題] 不同 Library 共用變數

看板LinuxDev作者 (妳哪位ㄚ)時間12年前 (2011/12/29 00:27), 編輯推噓4(407)
留言11則, 4人參與, 最新討論串1/1
各位好, 有點難以敘述 畫個簡圖表示 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)

12/29 17:33, , 1F
有AndroidDev板,你要不要到那邊問,也許比較快
12/29 17:33, 1F

12/29 20:01, , 2F
你從 framework 下來應該是 JNI 吧 ?JNI 裡面似乎有機制
12/29 20:01, 2F

12/29 20:02, , 3F
可以共用同一個 object
12/29 20:02, 3F

12/29 21:22, , 4F
我有轉一份過去問; 是 JNI
12/29 21:22, 4F

12/30 01:36, , 5F
透過 Binder 是另一種一勞永逸的解法,不過有很多準備工作
12/30 01:36, 5F

12/30 13:05, , 6F
jserv大神說的我有興趣,請問有連結可以參考嗎?
12/30 13:05, 6F

01/06 02:56, , 9F
簡單來說,要脫離使用 symbol 的層次,特別在這類需要存取
01/06 02:56, 9F

01/06 02:57, , 10F
共用資源的狀況,透過 Binder 來操作一致的介面,會靈活些
01/06 02:57, 10F

01/06 15:15, , 11F
Thank you very much
01/06 15:15, 11F
文章代碼(AID): #1E-qDrmu (LinuxDev)