安卓so文件转linux,如何在Android中导入so文件

以下是我的项目目录

470fe02e33df?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

项目目录

libs里面是我们需要导入的so文件,请按照他们使用的编译器来进行放置。

470fe02e33df?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

头文件所在目录

src/main/cpp/include中存放着需要导入的头文件,也即是.h文件。之后,我们就可以开始配置CMakeLists.txt文件了。我的CMakeLists.txt文件配置如下:

470fe02e33df?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

CMakeLists.txt

我们需要填写以下的代码:

#这里包含头文件的目录,我的目录是在make文件目录下面的src/main/cpp/include

include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include)

#这里定义链接的名称和类型(SHARED和STATIC),动态静态之分。

add_library(x264 SHARED IMPORTED)

#在这里写入so文件的所在位置

set_target_properties(x264 PROPERTIES IMPORTED_LOCATION

${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}/libx264.so)

#在这里加入链接名称

target_link_libraries(x264)

之后我们就可以使用带入的so文件里面的函数了。

这也是教你如何在Android Stdio中导入libx264 so库,有用的小伙伴们记得点个赞。

可能存在的问题:

问题:

FAILED: cmd.exe /C "cd . && E:\android-ndk-r14b\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=i686-none-linux-android --gcc-toolchain=E:/android-ndk-r14b/toolchains/x86-4.9/prebuilt/windows-x86_64 --sysroot=E:/android-ndk-r14b/platforms/android-16/arch-x86 -fPIC -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -g -DANDROID -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -mstackrealign -Wa,--noexecstack -Wformat -Werror=format-security -std=c++11 -O0 -fno-limit-debug-info -O0 -fno-limit-debug-info -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -Wl,--build-id -Wl,--warn-shared-textrel -Wl,--fatal-warnings -Wl,--no-undefined -Wl,-z,noexecstack -Qunused-arguments -Wl,-z,relro -Wl,-z,now -shared -Wl,-soname,libnative-lib.so -o ..\..\..\..\build\intermediates\cmake\debug\obj\x86\libnative-lib.so CMakeFiles/native-lib.dir/src/main/cpp/native-lib.cpp.o ../../../../libs/x86/libAutoInteger.so ../../../../libs/x86/libx264.so -llog -lm "E:/android-ndk-r14b/sources/cxx-stl/gnu-libstdc++/4.9/libs/x86/libgnustl_static.a" && cd ."

E:/android-ndk-r14b/toolchains/x86-4.9/prebuilt/windows-x86_64/lib/gcc/i686-linux-android/4.9.x/../../../../i686-linux-android/bin\ld: error: ../../../../libs/x86/libx264.so: incompatible target

解决方法:这有可能是因为你编译使用的ndk的选项不是你需要的选项,有可能你目前使用的是X86的虚拟机,编译生成的却是armeabi-v7a,这样的话,需要修改build.gradle中修改NDK的配置,如下:

ndk{

abiFilters "armeabi-v7a" //, "x86"

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值