(Android jni) error: base operand of '->' has non-pointer type '_JNIEnv'
16lz
2021-01-23
Android将“.c”后缀名改为“.cpp”时java调用native失败及“error: base operand of '->' has non-pointer type '_JNIEnv'
现象:“.c”后缀名改为“.cpp”时java调用native失败。
解决:加入“extern "C"”。
现象:“error: base operand of '->' has non-pointer type '_JNIEnv'”错误。
解决:将“(*env)->NewStringUTF(env, "HelloWorld from JNI !");”改为“env->NewStringUTF("HelloWorld from JNI !")”。
例子:
Cpp代码
- #include<stdio.h>
- #include<string.h>
- #include<android/log.h>
- #include<jni.h>
- #ifdef__cplusplus
- extern"C"
- {
- #endif
- jintJava_com_duicky_MainActivity_add(JNIEnv*env,jobjectthiz,jintx,jinty)
- {
- //该方法为打印的方法
- __android_log_print(ANDROID_LOG_INFO,"JNIMsg","GetParam:x=%dy=%d",x,y);
- intiRet=x+y;
- returniRet;
- }
- jstringJava_com_duicky_MainActivity_getString(JNIEnv*env,jobjectthiz)
- {
- jstringstrRet=env->NewStringUTF("HelloWorldfromJNI!");
- returnstrRet;
- }
- #ifdef__cplusplus
- }
- #endif
更多相关文章
- [置顶] Android系统安全之旅 第1章 编译Android程序的方法
- Android使背景灯(Brightness)高亮的方法
- android spinner自动弹出列表,设置title,TtextView不换行自动截取
- Android 获取控件高度宽度三种方法,防止0的出现
- android获取控件的几种方法
- Android 获取手机屏幕大小两种方法