[問題]不知道是不是dlsym的問題...

看板LinuxDev作者 (環島旅行ing)時間12年前 (2013/06/28 15:40), 編輯推噓2(202)
留言4則, 2人參與, 最新討論串1/1
其實我上層是Android系統 要打通rfid 但我感覺我是卡在linux的部分 所以想說在這發問一下 在framework的最底層(Native) 我build了一包.so 在JNI層會利用dlopen dlsym去呼叫.so裡面的API~ 但有的可以用有的不能用.... 我歸納一下: 例如查詢.so版本號的API就可以用 開啟UART /dev/ttyO3 port的API 要先執行chmod 777 才可以開啟成功 對硬體做讀寫的API就會回傳失敗~ 但這包code我有build成執行檔在console環境下 (root權限) 是可以執行的(讀寫OK) 而安卓framework我記得他們的權限都是system 有懷疑是不是owner的問題.. 所以想請教前輩 有沒有遇過console 執行bin檔OK 但上層call .so裡的API卻失敗的情形 該朝哪個方向解決比較好? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 211.21.170.157 ※ 編輯: onlywig 來自: 211.21.170.157 (06/28 15:41) ※ 編輯: onlywig 來自: 211.21.170.157 (06/28 15:42)

06/29 01:41, , 1F
你要不要分開測,讀和寫分開
06/29 01:41, 1F

06/29 14:28, , 2F
目前只測讀而已 就失敗了..API回傳錯誤碼:無效的指令..
06/29 14:28, 2F

06/30 16:10, , 3F
"但有的可以用有的不能用",哪些是可以用的列出來看一下/
06/30 16:10, 3F
例如 char* get_lib_version(); int open_rfid_port(char *path); 這種的就可以用 int rfid_find_tags( found_tag_callback found_tag_cb, int count, int timeout_ms, access_report_callback access_report_cb); 這種就不行...我帶的參數跟我在bin的執行檔是一樣的 不知道為啥放在HAL就不行 ※ 編輯: onlywig 來自: 61.220.220.235 (07/01 09:16)

07/03 11:02, , 4F
我這幾天測試後發現是.so的問題...
07/03 11:02, 4F
謎底揭曉 是我用安卓的"bionic" (C的函式庫)去build出來的執行檔 就會有問題了 查了一下安卓的C函式庫並不是標準規範 但卻又build的過 不知道該怎辦..我現在懷疑只是UART沒有通而已 ※ 編輯: onlywig 來自: 122.146.76.147 (07/03 18:02)
文章代碼(AID): #1HpJtwiT (LinuxDev)
文章代碼(AID): #1HpJtwiT (LinuxDev)