NDK学习:C与C++在Ndk中的区别

来源:互联网 发布:js if undefined 编辑:程序博客网 时间:2024/05/22 06:10

使用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)
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 解脲支原体感染怀孕怎么办 怀孕了检查出解脲支原体感染怎么办 大便是黑色的要怎么办 大人直肠给药不好意思怎么办 肛周脓肿长肉芽怎么办 二岁宝宝有直肠息肉怎么办 87岁老人得直肠息肉怎么办 做b超查出囊肿怎么办 解大便时肛门痒怎么办 生完孩子肛门痒怎么办 把达克宁软膏摸到肛门怎么办 痔疮手术后肛门痒怎么办 便秘拉完屁股疼怎么办 屁股拉屎拉破了怎么办 6岁小朋友屁眼痒怎么办 孩子屁屁偶尔痒怎么办 1岁半宝宝屁眼痒怎么办 3岁宝宝肛门痒怎么办 得痔疮发烧了怎么办啊 痔疮手术后肚子胀气怎么办 乙肝引起的发烧头痛怎么办 肠癌手术后吃了会胃疼怎么办 来月经肛门坠痛怎么办 总想排便还有血怎么办 闻了别人的口臭怎么办 有内痔肛门经常不舒服怎么办 做完肠镜肛门疼怎么办 3周宝宝得皮彦怎么办 痔疮有蚕豆大了怎么办 顺生肛门坠胀怎么办 生孩子痔疮脱出不能回纳怎么办 痔疮犯了屁眼疼怎么办 孕晚期得痔疮了怎么办 孕39周痔疮严重怎么办 顺产后长痔疮了怎么办 怀孕了犯痔疮了怎么办 怀孕了痔疮犯了怎么办 痔疮手术后肛裂怎么办 痔疮引起的肛裂怎么办 痔疮手术后伤口不愈合怎么办 痔疮手术后伤口痒怎么办