gpt4 book ai didi

从 C++ 库项目引用共享库的 Android native 项目

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:40 28 4
gpt4 key购买 nike

我有两个项目:

1 - Android Native项目
2 - C/C++项目

我正在 C/C++ 项目中构建共享库文件 (.so),并希望在 Android Native 项目中使用这些 .so 文件。我不想将这些库文件从一个项目复制并粘贴到另一个项目。

首先,是否可以通过使用一些对 C++ 库项目的引用等来使用我的原生 Android 项目中的那些 .so 文件?

是否可以更容易地找到一种方法将.so 文件从C++ 库项目自动复制到Android 原生项目?

最佳答案

好吧,您需要先为 ARM 重新编译您的库。您可以为此使用 ndk 的“独立工具链”功能。在 ndk 目录 (docs/STANDALONE-TOOLCHAIN.html) 中有一个文档对此进行了更多解释。我需要在项目中使用 libexpat,所以我创建了一个 bash 文件来使用独立工具链编译 expat,如下所示:

NDK_PATH=/android-ndk-r7
NDK_GCC=${NDK_PATH}/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc

export CC="${NDK_GCC} --sysroot=${NDK_PATH}/platforms/android-8/arch-arm"
export CFLAGS='-mthumb'
export LDFLAGS='-Wl,--fix-cortex-a8'
./configure --host=arm-eabi
make

然后你可以把so复制到任何你想要的地方并从Android.mk中引用它:

LOCAL_LDLIBS := \
-Lvendor/expat/sdk/lib/android \
-lexpat

请注意,我构建了 expat 并将其静态链接,因此我不必担心复制结果 so

关于从 C++ 库项目引用共享库的 Android native 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9162541/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com