網站首頁 編程語言 正文
我的環境:
Android Studio Arctic Fox + JDK11 + Gradle 7.0.2 + NDK21 + opencv-4.5.1-android-sdk
代碼鏈接:
1.創建一個Native工程
2.下載OpenCV SDK
3.在Android Studio的cpp目錄下新建libs文件夾
將我們下載的OpenCV SDK 這個文件夾“OpenCV-android-sdk\sdk\native\libs” 下的 armeabi-v7a 整個復制到剛才的 libs 文件夾下
4.將 “OpenCV-android-sdk\sdk\native\jni” 路徑下的 include 文件夾整個復制到 cpp 文件夾下
5.配置build.gradle
6.配置CMakelists.txt
#目的是為了讓CMake找到我們的頭文件在哪里,這里是在 cpp/include 這個文件夾下 include_directories(include) #設置系統變量,目的是為了讓CMake知道在哪個目錄下找到我們的libopencv_java4.so這個庫 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}") target_link_libraries( myopencv opencv_java4 #鏈接libopencv_java4.so,這樣在生成的APK中才會有這個so ${log-lib})
7.點擊build,發現生成的apk中有我們引入的庫
接下來就是運行時會報錯
Java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
原因是在 NDK18 以前采用的是 gcc 編譯,NDK18 以后采用的是 clang ,而且 NDK18 以后沒有 libc++_shared.so 這個庫了,所以在運行時會報錯。
解決辦法:
在build.gradle中增加一句
arguments '-DANDROID_STL=c++_shared'
這樣可以遠程獲取到 libc++_shared.so 這個庫
重新編譯后發現 apk 中有了 libc++_shared.so ,而且 apk 可以正常運行
原文鏈接:https://blog.csdn.net/Redmoon955331/article/details/122112103
相關推薦
- 2022-11-21 go語言算法題解二叉樹的最小深度_Golang
- 2022-12-30 react中useState改變值不渲染的解決方式_React
- 2022-10-31 C#實現HTTP訪問類HttpHelper的示例詳解_C#教程
- 2022-07-21 nginx?配置指令之location使用詳解_nginx
- 2024-02-25 maven打包測試jar包沖突
- 2022-03-28 C語言怎么連接兩個數組的內容你知道嗎_C 語言
- 2022-07-15 C#?泛型字典?Dictionary的使用詳解_C#教程
- 2023-01-11 Python?基于xml.etree.ElementTree實現XML對比示例詳解_python
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支