dlopen failed: library “libc++.so“ not found问题解决

一、情况描述

最近遇到的一个项目中,使用了一个so库,这个so库中会去调用另一个so,但是在运行时会提示

dlopen failed: library "libc++.so" not found: needed by /data/app/~~D00W8e9ltq0qAmTYszJlCw==/com.xxx.xxx-Fnp4Vw9VDWGnn3Wj-gBGVQ==/base.apk!/lib/riscv64/libxxx.so in namespace classloader-namespace

这个libxxx.so是我自己的so依赖的第三方的一个so,我使用的是CMake来生成构建文件,网上查资料大部分都是"libc++_shared.so" not found,他们的方法大部分我都尝试过,包括externalNativeBuild中添加arguments “-DANDROID_STL=c++_shared”,或者把 libc++.so 复制到 libxxx.so 同级目录,但这些都是因为这些so文件本身缺少libc++.so,但我的情况是依赖的另一个so缺少该文件,也不能重新生成libxxx.so,缺少对应的c文件。

二、解决方法

#导入第三方so包,并声明为 IMPORTED 属性,指明只是想把 so 导入到项目中
add_library(NEEDED_LIBRARY SHARED IMPORTED)
add_library(C++ SHARED IMPORTED)
#指明 so 库的路径,CMAKE_SOURCE_DIR 表示 CMakeLists.txt 的路径
set_target_properties(
        NEEDED_LIBRARY
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/../lib/${ANDROID_ABI}/libxxx.so)
set_target_properties(
        C++
        PROPERTIES IMPORTED_LOCATION
        ${CMAKE_SOURCE_DIR}/../lib/${ANDROID_ABI}/libc++.so)
target_link_libraries( 
	your_target_library,
	# Links the target library to the C++ library
        C++
        NEEDED_LIBRARY	
        )
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值