android ndk 未定义对方法的引用

2024-04-10

您好,很抱歉这篇长文章我正在尝试编译一些静态类,即 jsmn.c、json.c 和 buf.c,它们是我从下载的 jsmn json 库的一部分https://github.com/alisdair/jsmn-example/downloads https://github.com/alisdair/jsmn-example/downloads.

我正在编译两个 STATIC_LIBRARIES lib1 和 json_library.lib1 具有依赖于 json_library 的本机代码。然后我将两个库制作成一个共享库,其中包含gnustl_static 和 lib1

我的文件夹结构如下

jni/lib1/Android.mk

include $(CLEAR_VARS)
LOCAL_MODULE := json_library
LOCAL_SRC_FILES := /3rdParty/jsmn/json_library.a
LOCAL_SRC_FILES := /3rdParty/jsmn/jsmn.c /3rdParty/jsmn/buf.c /3rdParty/jsmn/log.c /3rdParty/jsmn/json.c 
LOCAL_C_INCLUDES := /3rdParty/jsmn/jsmn.h /3rdParty/jsmn/buf.h /3rdParty/jsmn/log.h /3rdParty/jsmn/json.h 
# Optional compiler flags.
LOCAL_LDLIBS   = -lz -lm
LOCAL_CFLAGS   = -Wall -pedantic -std=c99 -g
include $(BUILD_STATIC_LIBRARY)

  include $(CLEAR_VARS)
  # Module Name
  LOCAL_MODULE    := lib1
  LOCAL_STATIC_LIBRARIES := json_library
  ........
  .......
  ......
  include $(BUILD_STATIC_LIBRARY)

jni/Android.mk

# Here we give our module name
LOCAL_MODULE    := lib2
# list the static modules included here!!!
LOCAL_STATIC_LIBRARIES :=   gnustl_static  lib1 
....
include $(BUILD_SHARED_LIBRARY)

jni/应用程序.mk

APP_MODULES   :=  lib2
# Optimization for release
APP_OPTM := release
#Targets
APP_ABI := armeabi-v7a armeabi

所以在 lib1 中我有一个类,它调用 json 库中名为的方法json_tokenise

#include <string.h>
#include <stdio.h>
 #include <stdlib.h>
 #include <jsmn/jsmn.h>
#include <jsmn/json.h>
#include <jsmn/buf.h>

jsmntok_t *tokens=json_tokenise((char *)data);

typedef enum {
START,
WRAPPER,
MESSAGE,
ROUTE,
OBJECT,
ARRAY,
SKIP,
STOP
}parse_state;

我收到以下错误

undefined reference to `json_tokenise(char*)'
collect2: ld returned 1 exit status
make: *** [obj/local/armeabi-v7a/lib2.so] Error 1

**** Build Finished ****

当我查看 [obj/local/armeabi-v7a/ 内部时,我可以看到libjson_library.a liblib1.a libgnustl_static.a正在为 armabi-v7 生成,但由于错误而无法生成 lib2。

请帮助或指导我哪里出错了,我已经花了两天时间在这上面,而且我是 NDK 的新手。


你应该修复你的jni/lib1/Android.mk file:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := json_library
LOCAL_SRC_FILES := 3rdParty/jsmn/jsmn.c 3rdParty/jsmn/buf.c 3rdParty/jsmn/log.c 3rdParty/jsmn/json.c 
LOCAL_C_INCLUDES := $(LOCAL_PATH)/3rdParty/jsmn
# Optional compiler flags.
LOCAL_LDLIBS   = -lz -lm
LOCAL_CFLAGS   = -Wall -pedantic -std=c99 -g
include $(BUILD_STATIC_LIBRARY)

如果此后仍有问题,请运行ndk-build带参数V=1在命令行上发布此构建的完整输出以及所有内容的完整内容Android.mk files.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android ndk 未定义对方法的引用 的相关文章

随机推荐

  • Request.Url.Host 是否包含子域?

    例如对于mail google com 它会返回google com还是mail google com 我自己实际上无法测试 它确实包含子域 例如mail google com
  • 你能使用 CSS 设置输入图像的 src 吗?

    你能使用 CSS 设置输入图像的 src 吗 这必须在 IE 中工作 No 你所能做的就是定义一个background imageURL 但与正确的 URL 不同 img 在很多方面 为什么需要这个 也许有一个解决方法
  • AWS EMR S3DistCp: auxService:mapreduce_shuffle 不存在

    我通过 SSH 连接到 AWS EMR v5 4 0 实例 并且想要调用 s3distcp 这个链接 http docs aws amazon com emr latest ReleaseGuide UsingEMR s3distcp ht
  • 如何使用 JMX 远程连接到 Dataproc 上的 Spark 工作线程

    我可以通过添加以下内容来很好地连接到驱动程序 spark driver extraJavaOptions Dcom sun management jmxremote Dcom sun management jmxremote port 91
  • 为我的 webpack 文件设置基本路径

    使用时requirejs 我这样做 require config baseUrl scripts console log Starting require A B C mainFunction 我在谷歌上搜索如何设置 Webpack 的基本
  • Azure:启动远程调试器失败

    我根据以下教程在 Windows Azure 中部署了一个 Web 角色 http weblogs asp net scottgu archive 2013 10 22 windows azure announcing release of
  • 如何在Java配置类中设置Spring weaver选项?

    我正在使用 Spring AOP 和提供的默认值DefaultContextLoadTimeWeaver 我希望能够编织持久化实体 并且我知道我必须设置编织器选项 来自控制台的警告 warning javax types are not b
  • Ruby on Rails Helper 方法 - HTML 显示为纯文本

    我的 Rails 应用程序有一个辅助方法 它返回一个字符串 其中包含 Google 网上论坛订阅表单的 HTML 代码 不幸的是 它以纯文本的形式出现在页面上 我怎样才能强制它呈现为 HTML 提前致谢 你的助手的结果需要在 Rails 3
  • 如何减慢或停止 XNA 中的按键速度

    我已经开始使用 XNA 框架编写游戏 并且遇到了一些我不知道如何正确解决的简单问题 我使用Texture2D 显示菜单并使用键盘 或游戏手柄 更改所选的菜单项 我的问题是当前用于在菜单项之间切换的功能太快了 我可能会单击向下按钮 它会向下移
  • 任意类型说明符上的 Defmethod?

    我想做的是 defgeneric fn x defmethod fn x integer 1 Positive integer defmethod fn x integer 1 Negative integer 我想要一个可以与任意类型说明
  • 在 SwiftUI 中,如何添加循环视频作为全屏背景图像?

    我有一个大约 10 秒长的视频 我想在我的一个 SwiftUI 视图中作为全屏背景图像循环播放 我怎样才能实现这个 第一个想法是与 Swift 合作import AVFoundation 但不确定这是否是正确的道路 您可以使用AV框架系列和
  • Chrome 在使用位置粘性/固定时会切断重影图像

    我正在尝试使用 HTML5 拖放position fixed从位于屏幕左侧固定位置的菜单中拖动元素 以下代码在 Safari 和 Firefox 中运行良好 但当我在 Chrome 中尝试时 滚动后 从拖放 API 生成的 幽灵 图像不可见
  • Leaflet.js:如何从地图中删除多个图层

    我正在使用 Leaflet js 制作地图 现在我想从地图中删除添加的图层 通过单击输入 按钮 所有选中的复选框将更改为未选中 并且所有相应的图层将从地图中删除 要从地图中删除图层 需要该图层的 ID 该 id 等于相应复选框的 id 这就
  • 如何使用 mysqli 准备好的语句绑定 N 个参数?

    在旧的 mysql 代码中 我有一个完美运行的查询 如下所示 questioncontent isset GET questioncontent GET questioncontent searchquestion questioncont
  • 如何检测用户何时成功完成php中文件的下载

    我有一个处理文件下载请求的 php 页面 我需要能够检测文件何时已成功下载 如何才能做到这一点 也许有一些方法可以检测该客户端 然后向服务器发送确认 Thanks 编辑 通过句柄 我的意思是该页面正在执行以下操作 file var www
  • Android - 应用程序安装在 SD 卡上时内部存储与外部存储

    我有一个可以下载大量内容的应用程序 用户之间有所不同 但可能是 200mb 到 1GB 或更多 目前 我将所有这些内容保存在外部存储上 因为这可能是空间最多的区域 例如 SD 卡 这在大多数情况下都可以正常工作 但在某些情况下这不一定是理想
  • Clojure 是否有命名私有函数的约定?

    当我在 Clojure 中定义私有函数时 我通常使用 前缀作为视觉指示符 表明该函数不能在我的命名空间之外使用 例如 defn name let formatter formatter yyyy MM dd HH mm ss SSSS fo
  • HTML5 push/replaceState 和 标签导致安全异常

    我有一个网站的测试版本 位于正常网站的子域中 例如 http test x com http test x com代替http x com http x com 我用标签将所有资源请求转换回原始域 在我实现 HTML5 Push repla
  • 对象或原始类型

    有人可以向我解释一下在 JAVA 中如何使用 Integer Boolean 等来代替它们的原始类型吗 我似乎无法理解他们提供的优势 它们似乎在处理空值时造成了不必要的问题 Thanks Boolean Integer Long 是对象 您
  • android ndk 未定义对方法的引用

    您好 很抱歉这篇长文章我正在尝试编译一些静态类 即 jsmn c json c 和 buf c 它们是我从下载的 jsmn json 库的一部分https github com alisdair jsmn example downloads