Android NDK opencv link問題 (undefined reference to XXXX)

現象

undefined reference to XXXX (imwrite/imencode/....)

成因

編譯的so所用STL與項目STL不一致。

現在項目一般用LLVM的C++_static,然而opencv3.4.1用的還是gnustl,opencv4用的LLVM故而無問題

解決辦法

  • 先改配置試試,opencv3修改STL爲gnustl,opencv4爲C++_static
    • 如果其他依賴項會報錯,那就看下一條
externalNativeBuild {
  cmake {
    arguments "-DANDROID_STL=gnustl_shared"
  }
}
  • 如果STL用的C++_static,用官方編譯的opencv4 (4.3.0實測無問題)
  • 如果STL用的gnustl,用opencv3 (3.4.1實測無問題)
  • 如果頭鐵一定要用特定版本opencv和STL……那就需要自己編譯so了。可以參照:鏈接

 

參考

https://blog.csdn.net/matrix_laboratory/article/details/79217973

https://stackoverflow.com/questions/50677231/linking-errors-on-android-with-opencv-3-4-0-and-ndk

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章