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(安卓)MapView 申请apiKey
  2. Android中的尺寸单位
  3. 工作环境搭建(8) - CentOS7命令行安装And
  4. 【android测试】值得学习的android测试知
  5. Android(安卓)Develop Challenge
  6. 【android开发】styles.xml常用的设置属
  7. 在android平台上编译libpcap-0.9.8 和 jn
  8. [转]Android文件管理器介绍
  9. 固定屏幕显示模式 ScreenOrientation
  10. Could not find helloworld.apk