Android NDK .c与.cpp分配字符串问题
2011-11-10 11:37
253 查看
.c文件下用
return (*env)->NewStringUTF(env, "Hello Baina!Guang Li is coming!");
.cpp文件下用
env->NewStringUTF(const char* bytes);
Java通过JNI机制调用c/c++写的native程序。c/c++开发的native程序需要遵循一定的JNI规范,下面的例子就是一个JNI函数声明:
JNIEXPORT jint JNICALL Java_jnitest_MyTest_test
(JNIEnv * env, jobject obj, jint arg0);
JVM负责从Java Stack转入C/C++ Native Stack。当Java进入JNI调用,除了函数本身的参数(arg0),会多出两个参数:JNIEnv指针和jobject指针。
JNIEnv指针是JVM创建的,用于Native的c/c++方法操纵Java执行栈中的数据,比如Java Class, Java Method等。
首先,JNI对于JNIEnv的使用, 提供了两种语法: c语法以及c++语法,如下:
c语法:
jsize len = (*env)->GetArrayLength(env,array);
c++语法:
jsize len =env->GetArrayLength(array);
(注:由于C语言并不支持对象的概念,所以C语法中需要把env作为第一个参数传入,类似于C++的隐式参数this指针).
return (*env)->NewStringUTF(env, "Hello Baina!Guang Li is coming!");
.cpp文件下用
env->NewStringUTF(const char* bytes);
Java通过JNI机制调用c/c++写的native程序。c/c++开发的native程序需要遵循一定的JNI规范,下面的例子就是一个JNI函数声明:
JNIEXPORT jint JNICALL Java_jnitest_MyTest_test
(JNIEnv * env, jobject obj, jint arg0);
JVM负责从Java Stack转入C/C++ Native Stack。当Java进入JNI调用,除了函数本身的参数(arg0),会多出两个参数:JNIEnv指针和jobject指针。
JNIEnv指针是JVM创建的,用于Native的c/c++方法操纵Java执行栈中的数据,比如Java Class, Java Method等。
首先,JNI对于JNIEnv的使用, 提供了两种语法: c语法以及c++语法,如下:
c语法:
jsize len = (*env)->GetArrayLength(env,array);
c++语法:
jsize len =env->GetArrayLength(array);
(注:由于C语言并不支持对象的概念,所以C语法中需要把env作为第一个参数传入,类似于C++的隐式参数this指针).
相关文章推荐
- Android-NDK开发之第三个例子--传递字符串数组和中文乱码问题
- Android-NDK开发之第三个例子--传递字符串数组和中文乱码问题
- Android-ndk-64位so文件问题(RSA加密采用cpp代码实现)
- android 开发 NDK相关问题
- Android studio 使用Debugger问题(代码中含有ndk)
- 关于Android下的JNI编程、SO库以及NDK的一些问题
- 解决Android Studio 2.2.3中添加.cpp .h文件在Project->Android无法显示,无法正常编译问题。
- 解决android使用gson解析json字符串,并使用混淆编译方式打包apk遇到的问题
- Android-NDK编译问题
- 关于Android5.x适配的一点小问题(NDK error: SIGABRT)
- (OK—C程序) Eclipse C/C++ — CentOS 7 + android-ndk + eclipse-cpp-mars-R
- Android中判断输入的字符串是否为数字,可以解决如输入为点出现的问题
- Android虚拟机(DVM)内存分配——内存溢出问题
- cygwin下配置android-ndk时遇到的各种问题及解决方案
- Android虚拟机(DVM)内存分配——内存溢出问题
- Android 导入项目时遇到的JNI和NDK问题
- 三星android note2/s4等手机无法ndk调试问题
- 关于动态内存分配与字符串操纵的问题总结
- android开发 NDK相关问题
- Android虚拟机(DVM)内存分配——内存溢出问题