【问题标题】:Linking with native SO file present in included library project of Android与 Android 包含的库项目中存在的本机 SO 文件链接
【发布时间】:2014-12-31 10:16:46
【问题描述】:

我正在开发一个依赖于另一个库项目的项目。库项目既有 java 文件,也有本机 SO 文件。

从 Android 项目 java 源访问 JAVA 源文件 (API) 没有任何问题。但是,我的本机代码也依赖于包含在 android 的库项目中的本机 SO 文件。

Library Project         Android Project
---------------         ---------------
src/Java files    <--   Java files
libs/.so files    <--   libs/.so files

.so 文件是包含的库项目的一部分。我当前的 Android 项目原生代码如何尝试使用包含的库项目的 .so 文件。目前,我收到 未定义引用的链接错误到作为 library/libs/.so 文件一部分的所有函数。

如果有人遇到/解决过类似问题,请告诉我。

【问题讨论】:

  • 为什么不发布您的 Android.mk 文件,并逐字发布实际的链接错误消息。

标签: android android-ndk shared-libraries


【解决方案1】:

您可能已经将这两个项目都导入了 Eclipse。但是ndk-build 对 Eclipse 一无所知。如果库自带定义PREBUILT_SHARED_LIBRARY 的自己的.mk 文件,那就更好了。一个这样的例子是OpenCV,其中包括 sdk/native/jni/OpenCV.mk 文件。

但您可以简单地将 .so 文件的路径添加到您的 Android.mk,例如将以下行放在文件末尾:

include $(CLEAR_VARS)
LOCAL_MODULE:=LibraryProjectSO
LOCAL_SRC_FILES:=/LibraryProject/libs/library.so
include $(PREBUILT_SHARED_LIBRARY)

现在您可以将 LibraryProjectSO 添加到 LOCAL_SHARED_LIBRARIES 列表中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 1970-01-01
    • 2011-08-03
    • 2012-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多