本來做了個objectbox的demo,執行正常;還有乙個文字掃瞄識別,也執行正常。
但是識別模組所用的so檔案是armeabi的,objectbox專案的不需要自己去匯入。問題來了,識別模組自能是armeabli的cpu架構,其他的不可以,所以demo是直接固定了安裝需要的cpu 。
ndk但現在是要把這兩者合在一起,第一波問題不大,只要在對應的armeabi資料夾加上objectbox的so庫上去就好了,因為加了這句話後,當系統要找so檔案時就會去找對應目錄,但objectbox的so都整合到jar包裡面了,怎麼引用就不知道了,反正加了ndk限制後就找不到so庫了,要自己補上去,怎麼找整個so檔案呢,可以在可以允許的demo中直接搜尋,因為已經生成在build/intermediates,自己對應的來拿。
第二波問題來了,我們普通的手機的cpu架構大概都是arm的,而我們開發的模擬器卻基本都用x86的(不是沒有,而是太慢了),所以我們指定了arm架構,模擬器就用不了,而且還有部分手機是x86的,這樣會有部分影響,所以把x86加上去。
ndk我模擬器用的是x86_64的,我一開始把這個加上去,但是問題來了
unsatisfiedlinkerror x.so is 64-bit instead of 32-bit之android 64 bit so
這個問題原因是說,我們一開始有地方使用了64架構了,但後面有其他地方使用了32架構的so,系統是不支援這種操作。
因為armeabi是屬於32的,而x86_64是64位的,當兩個都使用的時候,就會報錯,所以,當你某些so庫只支援某種架構時就要注意了,那時候最後同時只支援乙個,要不都32位,要不都64位。
CMAKE使用鏈結第三方SO庫
cmake 命名變數 set inc dir usr local include set link dir usr local lib set source files main.cpp 去 找標頭檔案 相當於gcc clang 中的 i i的大寫字母 引數 include directories ...
android ndk9 編譯第三方so庫
因為不了解,做個備份。希望以後通過學習能夠明白。在開發過程中,遇到這樣的問題。使用第三方提供的so動態庫,去實現jni。結果放到系統之後,出現 e dalvikvm 1986 dlopen system lib libadvcactit jni.so failed cannot load libra...
Qt呼叫第三方C動態庫 so
此處的編譯器必須為交叉編譯器 以csdn檔案為例 1 將現有的檔案編譯為動態庫 gcc o fpic shared o libcsdn.so csdn.h csdn.c 2 將檔案新增到專案路徑 將libcsdn.so檔案和csdn.件複製到.pro檔案同級目錄 3 在.pro檔案中新增 libs ...