c++:
C++语言在编译的时候为了解决函数的多态问题,会将函数名和参数联合起来生成一个中间的函数名称,而C语言则不会,因此会造成链接时找不到对应函数的情况,此时C函数就需要用extern "C"进行链接指定,这告诉编译器,请保持我的名称,不要给我生成用于链接的中间函数名;exter "C"{jni代码}。
#ifdef __cplusplus
extern "C" {//C++编译器按照C的obj文件格式编译
#endif
jstring Java_com_example_testndkdemo_MainActivity_getHello(JNIEnv* env,
jobject thiz ) {
return env->NewStringUTF("Hello World JNI!"); // env->
}
#ifdef __cplusplus
}
#endif
c:
jstring Java_com_example_testndkdemo_MainActivity_getHello(JNIEnv* env,
jobject thiz ) {
return (*env)->NewStringUTF(env, "Hello World JNI!");
}