JNI调用c/c++,env->和(*env)->是有区别的

JNI调用c/c++,env->和(*env)->是有区别的 



转载自:http://blog.chinaunix.net/uid-20406995-id-1686163.html

如果是c程序,要用 (*env)-> 

如果是C++要用 env->

ps:在linux下如果.c文件中用 “env->” 编译会找不到此结构,必须用“(*env)->”,或者改成.cpp文件,以 c++的方式来编译。


以下是两者的区别:

jni.h中

struct JNINativeInterface_;
struct JNIEnv_;
#ifdef __cplusplus
typedef JNIEnv_ JNIEnv;
#else
typedef const struct JNINativeInterface_ *JNIEnv;
#endif
/*
* We use inlined functions for C++ so that programmers can write:
*
*   env->FindClass("java/lang/String")
*
* in C++ rather than:
*
*    (*env)->FindClass(env, "java/lang/String")
*
* in C.
*/


即C++中使用
env->FindClass("java/lang/String")


C中使用

(*env)->FindClass(env, "java/lang/String")


猜你喜欢

转载自blog.csdn.net/netwalk/article/details/22753429
env