Используя JNI, я пытаюсь написать собственный С++-метод для Android NDK, который делает вызов функции C, определенной в пользовательском файле заголовка. Тем не менее, я получаю опорную ошибку undefined для моего вызова функции C.
Вот мой код на С++, который вызывает вызов функции C и возвращает его результат в Java как jstring:
#include <jni.h>
#include "gesture_detector.h"
JNIEXPORT jstring JNICALL Java_com_example_bmtitest_JavaAbstractionLayer_callGestureAnalysis(JNIEnv *env, jobject obj, jfloat previousX, jfloat previousY, jfloat currentX, jfloat currentY) {
return env->NewStringUTF(gestureAnalysis(previousX, previousY, currentX, currentY));
}
Вот моя функция C:
#include <stdio.h>
#include "gesture_detector.h"
//implemented from gesture_detector.h
const char* gestureAnalysis(float previousX, float previousY, float currentX, float currentY)
{
float xOffset = currentX - previousX;
float yOffset = currentY - previousY;
if(xOffset == 0 && yOffset == 0)
{
return "TAP";
}
return "0";
}
Вот мой код Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := gestureDetector
LOCAL_SRC_FILES := gestureDetector.c NativeAbstractionLayer.cpp
LOCAL_LDLIBS := -landroid
include $(BUILD_SHARED_LIBRARY)
По-видимому, кажется, что определение функции, определенное в пользовательском файле заголовка (gesture_detector.h
), не найдено. Я думаю, что это может быть проблемой в моем файле Android.mk.
Может ли кто-нибудь сказать мне, что я делаю неправильно здесь?