链接到使用ndk构建的Android库项目中的共享库
Link to shared library from Android library project with ndk-build
我有一个Android库项目"A",它在"A/jni"文件夹中包含本机C++源,可以很好地构建为"A/libs/armeabi-v7a/libA.so",并与其他平台相关。
我现在想做一个Android项目"B",它包括Java内容以及"B/jni"文件夹中更多的原生C++源代码。这些源使用项目"A"的C++库中的代码。我通过设置成功地编译了这些
LOCAL_C_INCLUDES := (path_to_A/jni)
(即从项目"A"中拾取头文件)。
问题是:我如何以一种干净的方式链接到"A/lib/armeabi-v7a/libA.so"?
我已经阅读了IMPORT_MODULE文档,但这似乎是针对这样一种情况,即您希望链接到纯NDK模块,而不是安卓库项目中的库。
首先创建一个模块,将您的libA.so库编译为项目B中预先构建的共享库。
include $(CLEAR_VARS)
LOCAL_MODULE := libA
LOCAL_SRC_FILES := path/to/libA.so
include $(PREBUILT_SHARED_LIBRARY)
然后,通过以下方式将此模块添加到项目的主模块中:
LOCAL_SHARED_LIBRARIES := libA
我从未在我的项目中尝试过IMPORT_MODULE选项,但这在我的情况下有效。
@Kasper:你说:
LOCAL_C_INCLUDES := (path_to_B/jni)
你的意思是:
LOCAL_C_INCLUDES := (path_to_A/jni)
相关文章:
- 如何使用 CMake 在 android 构建上编译和共享两个 c++ 库
- Android NDK:用于第三方Java库的静态或共享C++运行时
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- 使用 Flutter 从 Android 上的原生编译共享库中调用函数
- Android :需要在 c++ NDK 中创建共享首选项对象并存储一些布尔值
- 我可以在Embarcadero C 建造者中为Android(*.so)构建共享库
- Visual Studio共享库(Android,iOS)标题在Mac上找不到
- 无法将Android WebView渲染到C 和Java代码之间共享的外部纹理中
- Android OpenCV Linked CXX 共享库失败
- 当从共享库运行时,为什么此Android NDK代码崩溃
- 在 Android Studio (cmake) 中使用预构建的共享库
- dynamic_cast over共享库在使用clang编译的Android上的Qt中失败
- 不能在 Visual Studio 2015 的共享库(Android、iOS)中使用 nullptr
- Android GDB没有加载C 共享库
- iOS和Android之间共享代码的最佳方式
- Android NDK调用共享库中静态库的API
- Android本机共享库安装路径
- 基于 Linux 主机上构建的 Android 共享库无法与 Windows 主机上的库构建正确链接
- 如何在android共享库中链接多个静态库
- 使用android共享库调用约定