在ndk中从jni方法调用另一个C ++方法

时间:2014-02-12 07:06:09

标签: android c++ android-ndk

首先,我有一个JNIEXPORT方法,如下所示:

  JNIEXPORT void JNICALL Java_com_app_osap_Native_nativeProcessImage(JNIEnv *env, jobject thiz, jstring imagePath){
  // ...
   handle(data);
 }

然后我在同一个cpp文件中编写另一个方法:

 void handle(int data[]){

 }

但是我在编译源代码时遇到了这个错误:

   'handle' was not declared in this scope

请告诉我我的问题是什么以及如何解决。
提前致谢!

1 个答案:

答案 0 :(得分:3)

由于您不使用标头,因此需要在JNI函数之前声明句柄函数。或者,您可以开始使用包含函数声明的标头,然后将其包含在cpp文件中。像:

test.h:

void handle(int data[]);

TEST.CPP

#include test.h

不要忘记在Android.mk中将标题添加到您的模块中:

include $(CLEAR_VARS)
LOCAL_MODULE := test
LOCAL_SRC_FILES := path/to/test.cpp
LOCAL_C_INCLUDES := path/to/test.h     #This is the header file you created
include $(BUILD_SHARED_LIBRARY)