嗨,很抱歉,我正在尝试编译一些静态类,即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对方法的未定义引用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)