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代码
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<android/log.h>
  4. #include<jni.h>
  5. #ifdef__cplusplus
  6. extern"C"
  7. {
  8. #endif
  9. jintJava_com_duicky_MainActivity_add(JNIEnv*env,jobjectthiz,jintx,jinty)
  10. {
  11. //该方法为打印的方法
  12. __android_log_print(ANDROID_LOG_INFO,"JNIMsg","GetParam:x=%dy=%d",x,y);
  13. intiRet=x+y;
  14. returniRet;
  15. }
  16. jstringJava_com_duicky_MainActivity_getString(JNIEnv*env,jobjectthiz)
  17. {
  18. jstringstrRet=env->NewStringUTF("HelloWorldfromJNI!");
  19. returnstrRet;
  20. }
  21. #ifdef__cplusplus
  22. }
  23. #endif

更多相关文章

  1. [置顶] Android系统安全之旅 第1章 编译Android程序的方法
  2. Android使背景灯(Brightness)高亮的方法
  3. android spinner自动弹出列表,设置title,TtextView不换行自动截取
  4. Android 获取控件高度宽度三种方法,防止0的出现
  5. android获取控件的几种方法
  6. Android 获取手机屏幕大小两种方法

随机推荐

  1. android 让TextView自带滚动条
  2. Android(安卓)监听 home键和菜单键
  3. 【Android】在任何View上添加红点★★★
  4. Android(安卓)动态切换底部tab按钮
  5. Android(安卓)7.0 app代码修改抓包
  6. 视频聊天系统源码Android(安卓)播放视频
  7. Android电池管理
  8. Android(安卓)2.2.2到Android(安卓)4.2.2
  9. Android笔记
  10. Android(安卓)监听 home键和菜单键