Android NDK开发method GetStringUTFChars’could not be resolved
Android NDK开发method GetStringUTFChars’could not be resolved
图1
最近用到android的ndk,但在eclipse中提示method GetStringUTFChars’could not beresolved这样的错误,但奇怪的是我也增加了图1的代码到android-ndk-r10b\samples\hello-jni\jni\hello-jni.c中却没有这个编译错误,我分别右击编译出错的AppCenter和hello-jni工程,发现AppCenter工程属性多了C/C++ Build和C/C++ General,如下图:
图2
解决办法是右键工程 property->C/C++ General->CodeAnalysis—>配置当前工程(或者workspace)->使 method cannot be resolved 不选中(即此项不进行报错 )
这样就可以编译成功了,但我在做一些测试又改回编译OK的状态,却有另一个编译错误:
no matchingfunction for call to '_JNIEnv::GetStringUTFChars(JNIEnv*&, _jstring*&,
jboolean*)'
改为下面的代码就可以了
const char*path_utf = env->GetStringUTFChars(path, &iscopy);
可以为什么在anroid NDK中自带的例子没有这个问题呢?因为Android NDK带的jni例子都是使用C定义JNI接口,但是在项目中,因为Native代码是用C++编写的。
JNIEnv *env参数的使用有下面的差别:
所有JNI接口的第一个参数是JNIEnv *env, 在C中,使用方法是
(*env)->NewStringUTF(env,"Hello from JNI!");
但在C++中,其调用方法是
env->NewStringUTF("Hellofrom JNI!");
我们来看jni.h的相关内容:
#if defined(__cplusplus)
typedef
_JNIEnvJNIEnv;
typedef
_JavaVMJavaVM;
#else
typedef
const
struct JNINativeInterface* JNIEnv;
typedef
const
struct JNIInvokeInterface* JavaVM;
#endif
可以看到,对于C和C++,定义有所不同,主要原因是C不支持类,所以采用了一种变通的方法,下面给出JNIEnv分别对应C和C++的定义:
(1) C
/* JNI spec says this returns const jbyte*, but that'sinconsistent */
const
char* (*GetStringUTFChars)(JNIEnv*,
jstring,
jboolean*);
(2) C++
struct _JNIEnv {
……….
const
char*GetStringUTFChars(jstring string,
jboolean* isCopy)
{returnfunctions->GetStringUTFChars(this, string, isCopy);
}
………………
}
参考链接:
Eclipse Ndk开发中的Method 'NewStringUTF' could not be resolved问题
http://www.android100.org/html/201308/09/3935.html
http://blog.csdn.net/kandyer/article/details/9097203
Android NDK开发method GetStringUTFChars’could not be resolved的更多相关文章
- Android NDK开发
Android NDK 开发教程(极客学院) 一.Android NDK环境搭建 使用最新ndk,直接抛弃cygwin,以前做Android的项目要用到NDK就必须要下载NDK,下载安装Cygwin( ...
- Android NDK 开发(四)java传递数据到C【转】
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41845701 前面几篇文章介绍了Android NDK开发的简单概念.常见错误及处 ...
- Android NDK 开发(三)--常见错误锦集合Log的使用【转】
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41826511 Android NDK开发经常因某些因素会出现一些意想不到的错误, ...
- Android NDK 开发(二) -- 从Hlello World学起【转】
转载请注明出处:http://blog.csdn.net/allen315410/article/details/41805719 上篇文章讲述了Android NDK开发的一些基本概念,以及NDK ...
- 跟我学Android NDK开发(一)
Android NDK 开发跟其它开发一样,首先需要配置好开发环境,本文以 Ubuntu系统为例介绍如何进行 Android NDK 开发环境的配置. 1. 简介 什么是 Android NDK 呢? ...
- Android NDK开发Hello Word!
在之前的博客中已经为大家介绍了,如何在win环境下配置DNK程序,本篇我将带大家实现一个简单的Hello jni程序,让大家真正感受一下NDK开发的魅力.这里我们选择使用C+JAVA开发Android ...
- Android NDK开发初识
神秘的Android NDK开发往往众多程序员感到兴奋,但又不知它为何物,由于近期开发应用时,为了是开发的.apk文件不被他人解读(反编译),查阅了很多资料,其中有提到使用NDK开发,怀着好奇的心理, ...
- android NDK开发环境搭建
android NDK开发环境搭建 2012-05-14 00:13:58 分类: 嵌入式 基于 Android NDK 的学习之旅-----环境搭建 工欲善其事必先利其器 , 下面介绍下 Eclip ...
- !! 2.对十份论文和报告中的关于OpenCV和Android NDK开发的总结
http://hujiaweibujidao.github.io/blog/2013/11/18/android-ndk-and-opencv-development-3/ Android Ndk a ...
随机推荐
- hive中的NULL(hive空值处理)
HIVE表中默认将NULL存为\N,可查看表的源文件(hadoop fs -cat或者hadoop fs -text),文件中存储大量\N, 这样造成浪费大量空间.而且用java.python直接进入 ...
- Swift:一个简单的货币转换器App在iOS10中的分析和完善
这本不算是一个完整的货币转换App,只不过是一个小巧的学习性质的程序.该App覆盖了如下几个知识点: 多国语言的支持 通过网络Api接口读取数据 最后我们来修复一个原来代码中的一个小错误作为完美的收尾 ...
- Scala:集合类型Collection和迭代器
http://blog.csdn.net/pipisorry/article/details/52902549 Scala Collection Scala 集合分为可变的和不可变的集合. 可变集合可 ...
- Scheme call/cc 研究
目前尚不清楚实质,但已经能够从形式上理解它的某些好处,有个很简单的连乘函数可以说明: 为了展示究竟发生了什么,我包装了下乘法函数,将其变为mul. 我们将比较product和xproduct的区别. ...
- Java学习之继承中的执行顺序详解
代码块(理解) (1)用{}括起来的代码. (2)分类: A:局部代码块 用于限定变量的生命周期,及早释放,提高内存利用率. B:构造代码块 把多个构造方法中相同的代码可以放到这里,每个构造方法执行前 ...
- 【Android应用开发】Android 蓝牙低功耗 (BLE) ( 第一篇 . 概述 . 蓝牙低功耗文档 翻译)
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50515359 参考 : -- 官方文档 : https://develope ...
- java中&和&&的区别 位运算
1.1. 逻辑与的运算符功能 1.1.1. 测试&& public static void main(String[] args) { int x=5; if (x==6 && ...
- iOS开发之Xcode常用调试(Debug)技巧总结
一.Xcode调试技巧之:NSLog 上面也提到了,在我们日常的开发过程中最常见的Debug方式就是打Log.而在OC语言中,打Log是采用NSLog方法.但是NSLog效率低下,具体原因可以看这篇博 ...
- 4.1、Android Stuido配置你的Build Variant
每个版本的build variant代表了你可以构建的每一个版本.虽然你未直接配置build variants,你可以通过配置build type和product flavor. 比如,一个demo的 ...
- 单幅图像的深度学习,对NYU数据集进行划分
针对分割问题,官方已经划分好了:http://cs.nyu.edu/~silberman/projects/indoor_scene_seg_sup.html import numpy as np i ...