【发布时间】:2013-07-17 10:19:16
【问题描述】:
我需要构建一个共享库,它将在 Android 应用程序示例中使用。 此共享库必须使用先前静态库中包含的方法...
我有 2 个项目:
-- C++项目(用于使用NDK构建静态库.a)。
-- Android 库 ;带 JNI 接口。
我的Android库项目的层次结构是:
项目根目录
- 源代码
- jni
-
包括
- myHeader.hpp
-
prebuid(包含 .a 库)
- mylib.a
- jni.cpp
- Android.mk
-
包括
myHeader.hpp 文件:
char* myMethod(int a, int b);
jni.cpp 文件:
#include <jni.h>
#include <string.h>
#include <stdio.h>
#include "include/myHeader.hpp"
extern "C"
{
jstring Java_my_package_myMethod(JNIEnv* env, jobject obj, jint a, jint b);
}
...
android 制作文件:
LOCAL_PATH := $(call my-dir)
#Build module for static library
include $(CLEAR_VARS)
LOCAL_MODULE := my_static_lib
LOCAL_SRC_FILES := prebuild/mylib.a
LOCAL_EXPORT_C_INCLUDES := include/myHeader.hpp
include $(PREBUILT_STATIC_LIBRARY)
#Build module for jni wrapper
include $(CLEAR_VARS)
LOCAL_MODULE := jni_wrapper_lib
LOCAL_SRC_FILES := jni.cpp
LOCAL_STATIC_LIBRARIES := my_static_lib
include $(BUILD_SHARED_LIBRARY)
当我尝试构建 JNI 项目时,出现以下错误: 对“myMethod(int a, int b)”的未定义引用
有人可以解释我为什么会出现这个错误吗?
非常感谢您的宝贵时间;
【问题讨论】:
标签: android android-ndk java-native-interface shared-libraries static-libraries