android ndk对方法的未定义引用

android ndk对方法的未定义引用,第1张

概述嗨,很抱歉,我正在尝试编译一些静态类,即jsmn.c,json.c和buf.c,它们是我从https://github.com/alisdair/jsmn-example/downloads下载的jsmnjson库的一部分.我正在编译两个STATIC_LIBRARIESlib1和json_librrary.lib1具有依赖于json_library的本机代码,然后将两个库制作成一个共享

嗨,很抱歉,我正在尝试编译一些静态类,即Jsmn.c,Json.c和buf.c,它们是我从https://github.com/alisdair/jsmn-example/downloads下载的Jsmn Json库的一部分.

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

我的文件夹结构如下

jni / lib1 / ANdroID.mk

include $(CLEAR_VARS)LOCAL_MODulE := Json_libraryLOCAL_SRC_fileS := /3rdParty/Jsmn/Json_library.aLOCAL_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 -lmLOCAL_CFLAGS   = -Wall -pedantic -std=c99 -ginclude $(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 nameLOCAL_MODulE    := lib2# List the static modules included here!!!LOCAL_STATIC_liBRARIES :=   gnustl_static  lib1 ....include $(BUILD_SHARED_liBRARY)

jni / Application.mk

APP_MODulES   :=  lib2# Optimization for releaseAPP_OPTM := release#TargetsAPP_ABI := armeabi-v7a armeabi

所以在lib1内部,我有一个类,它从名为Json_tokenise的Json库中调用一个方法.

#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 statusmake: *** [obj/local/armeabi-v7a/lib2.so] Error 1**** Build Finished ****

当我查看[obj / local / armeabi-v7a /
正在为armabi-v7生成libJson_library.a liblib1.a libgnustl_static.a,并且由于错误而无法生成lib2.

请帮助或指导我哪里出了问题我已经花了两天时间,但我还是NDK的新手.

解决方法:

您应该修复jni / lib1 / AndroID.mk文件:

LOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODulE := Json_libraryLOCAL_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 -lmLOCAL_CFLAGS   = -Wall -pedantic -std=c99 -ginclude $(BUILD_STATIC_liBRARY)

如果之后仍然遇到问题,请在命令行上使用参数V = 1运行ndk-build,并发布此版本的完整输出以及所有AndroID.mk文件的完整内容.

总结

以上是内存溢出为你收集整理的android ndk对方法的未定义引用全部内容,希望文章能够帮你解决android ndk对方法的未定义引用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1086229.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存