整個多個第三方的so庫

2021-08-14 12:06:53 字數 887 閱讀 2179

本來做了個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 ...