2014-02-12 125 views
2

首先,我有一个JNIEXPORT方法是这样的:调用从JNI方法NDK其他C++方法

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 

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

回答

2

由于您不使用头文件,因此需要在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) 
+0

我建议创建和使用头文件,这是其他人所期望的。 – 18446744073709551615

+0

@ 18446744073709551615虽然你是对的,但他看起来像是一个新手,我不想让事情变得更加复杂。无论如何,我会编辑我的解决方案。 – eozgonul

+0

@ user2359247非常感谢,我试图在JNI之前声明句柄函数并且它工作。我会考虑头文件的方法。既然我是ndk新手,所以有很多我不知道的东西。 – R4j