NDK学习:C与C++在Ndk中的区别
来源:互联网 发布:mysql有nvl函数吗 编辑:程序博客网 时间:2024/06/07 19:52
使用C++做ndk 某些代码简单一些原因是 他给你封装了一个 env结构体
#include<stdio.h>#include"cn_itcast_cpp_DemoActivity.h"#include <android/log.h>#include<malloc.h>#include<stdlib.h>#define LOG_TAG "System.out"#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG, LOG_TAG, __VA_ARGS__)#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, LOG_TAG, __VA_ARGS__)char* Jstring2CStr(JNIEnv* env, jstring jstr){ char* rtn = NULL; jclass clsstring = (env)->FindClass("java/lang/String"); jstring strencode = (env)->NewStringUTF("GB2312"); jmethodID mid = (env)->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B"); jbyteArray barr= (jbyteArray)(env)->CallObjectMethod(jstr,mid,strencode); // String .getByte("GB2312"); jsize alen = (env)->GetArrayLength(barr); jbyte* ba = (env)->GetByteArrayElements(barr,JNI_FALSE); if(alen > 0) { rtn = (char*)malloc(alen+1); //"\0" memcpy(rtn,ba,alen); rtn[alen]=0; } (env)->ReleaseByteArrayElements(barr,ba,0); // return rtn;}JNIEXPORT jstring JNICALL Java_cn_itcast_cpp_DemoActivity_helloInC__ (JNIEnv * env, jobject obj){// return (*env)->NewStringUTF(env,"haha from c"); return env->NewStringUTF("haha from cpp");//使用c++的方式比较简洁 如何实现的参考jni.h/* * jstring NewStringUTF(const char* bytes) { return functions->NewStringUTF(this, bytes); } */}JNIEXPORT jstring JNICALL Java_cn_itcast_cpp_DemoActivity_helloInC__Ljava_lang_String_2 (JNIEnv * env, jobject , jstring jstr){char* cstr = Jstring2CStr(env , jstr);LOGI("%s",cstr);return env->NewStringUTF("haha from c __");}
然后注意的一点是
android.mk文件
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPP_EXTENSION := cpp //代表c++文件的扩展名可以随意 一般是cpp
LOCAL_MODULE := Hello
LOCAL_SRC_FILES := Hello.cpp
LOCAL_LDLIBS += -llog
include $(BUILD_SHARED_LIBRARY)
- NDK学习:C与C++在Ndk中的区别
- NDK学习:C与C++在Ndk中的区别
- C/C++在ndk开发中的区别
- 学习ndk以及c
- Android NDK 学习之在C中抛出异常
- Android NDK学习(7)NDK测试时遇到的问题:C与C++互相调用
- NDK开发之c、c++区别
- android NDK java-c中的签名
- ⑦NDK学习之C语言联合体
- ⑧ NDK学习之C语言枚举
- ⑨ NDK学习之C语言IO
- Android NDK 调用C
- android ndk c编译
- NDK c函数详解
- Android Studio NDK(C++)
- ndk c调java
- Android NDK Hello + JNI 与 NDK区别
- Ndk学习之C语言缓存(java->c)
- uva_10534_Wavio Sequence( LIS )
- DBeaver数据库管理工具连接Sybase数据库使用体验
- 好吧,我承认我今天闲的慌,下面送上分段函数的c程序
- 基础语言-题目39(水仙花数)
- C++标准转换符之const_cast
- NDK学习:C与C++在Ndk中的区别
- quartz.properties配置
- Hibernate读书笔记-----Hibernate的关联映射之1-N关联映射
- How to use "for/" batch command in Dos extention
- hdu 4455 Substrings
- cokies的保存C#
- 01_JavaWeb编程基础
- VBO,VAO、glVertexPointer()、glVertexAttribPointer()
- Chrome , Firfox 对应IE fireEvent 的方法