您的位置:首页 > 产品设计 > UI/UE

JNI遇到error: request for member 'FindClass' in something not a structure or union

2015-03-25 13:52 519 查看
error: request for member 'FindClass' in something not a structure or union

可能的问题是:

如果是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")

同理,ReleaseStringUTFChars函数也有可能出现这样的问题。

come from:http://blog.csdn.net/bailyzheng/article/details/8690538
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐