1
未定义的参考`get_int(”)的Android NDK链接到静态库
我想在android系统建立共享库。 此库使用来自预构建静态库“libATest.a”的函数。我尝试了所有可以使用的方法。总是得到错误“未定义引用到`get_int()'”,但我已经在libAtest.a中定义了它。寻求帮助! 的Android NDK R8
Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := ATest
LOCAL_SRC_FILES := libATest.a
include $(PREBUILT_STATIC_LIBRARY)
include $(CLEAR_VARS)
LOCAL_MODULE := capi
LOCAL_SRC_FILES := capi.cpp
LOCAL_STATIC_LIBRARIES := ATest
LOCAL_LDLIBS := -llog
#LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
include $(BUILD_SHARED_LIBRARY)
atest.h:
Application.mk:
APP_MODULES :=capi
capi.cpp:
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <jni.h>
#include <string.h>
#include <android/log.h>
#include "atest.h"
#ifdef __cplusplus
extern "C" {
#endif
jstring Java_com_wzh_test_AndriodJNITestActivity_ttstest(JNIEnv* env, jobject thiz){
get_int();
return env->NewStringUTF("I'm from C!");
}
#ifdef __cplusplus
}
#endif
libATest.a:
#include "atest.h"
int get_int(){
return 55;
}
当我将extern“C”添加到.h和.a文件后,得到错误“undefined reference to'get_int'”。GOD!Help! – Qiengo
刚刚注意到第二个问题...编辑答案 – nneonneo
不幸的是,我希望使用libATest.a,这是由其他公司提供的,我无法获得源代码。现在我正在做一个测试,所以我只是建立一个名为“libATest.a”的简单静态库。 – Qiengo