JNI在C++与java间传递各种数据格式举例
来源:互联网 发布:进出口总额 英文数据 编辑:程序博客网 时间:2024/05/16 04:59
JniMethodInfo minfo;//JniHelper /* 测试用方法 */bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/cocoa/HiWorld","loginGree", "()V");if (isHave) {//CCLog("有showText ");minfo.env -> CallStaticVoidMethod(minfo.classID,minfo.methodID);}else{//CCLog("没有方法showText");}/* 分享 *///将c++中的string转换成java中的string//char str[] = "test";bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/cocoa/HiWorld","shareSina", "(Ljava/lang/String;Ljava/lang/String;)V"); //if (isHave) {//CCLog("有share ");jstring jstr = minfo.env->NewStringUTF("test1 share");jstring jst = minfo.env->NewStringUTF("/data/data/com.cocoa/cy.png"); //jstring jst = minfo.env->NewStringUTF("");minfo.env -> CallStaticVoidMethod(minfo.classID,minfo.methodID,jstr,jst);}else{//CCLog("没有方法share");}/* 设置高分 */jint ind = 0;jlong lsre = 2202l;bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/cocoa/HiWorld","setHighScore", "(IJ)V"); if (isHave) {minfo.env -> CallStaticVoidMethod(minfo.classID,minfo.methodID,ind,lsre); }/* 成就解锁 */jint aind = 0;bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/cocoa/HiWorld","unLock", "(I)V"); if (isHave) {minfo.env -> CallStaticVoidMethod(minfo.classID,minfo.methodID,aind); }/* 测试用方法 */ bool isHave = JniHelper::getStaticMethodInfo(minfo,"com/cocoa/HiWorld","rtnActivity","()Ljava/lang/Object;");jobject jobj;if (isHave) { jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID); }//CCLog(" jobj存在"); /* 测试用方法,非静态无参数无返回值方法 */isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "()V"); if (isHave) {minfo.env -> CallVoidMethod(jobj,minfo.methodID);}/* 测试用方法,非静态有java类型的String参数无返回值方法 */isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "(Ljava/lang/String;)V"); if (isHave) {jstring jmsg = minfo.env->NewStringUTF("msg okey!");minfo.env -> CallVoidMethod(jobj,minfo.methodID,jmsg);}/* 测试用方法,返回java类型的String,有java类型的String和int参数方法 */isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "(Ljava/lang/String;I)Ljava/lang/String;"); if (isHave) {jstring jmsg = minfo.env->NewStringUTF("msg okey! return string");jint index = 0;minfo.env -> CallObjectMethod(jobj,minfo.methodID,jmsg,index);}/* 测试用方法,返回java类型的String[],有java类型的String[]和int参数方法 */isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","showText", "([Ljava/lang/String;I)[Ljava/lang/String;"); if (isHave) {jobjectArray args = 0;jstring str;jsize len = 5;const char* sa[] = {"Hi,","World!","JNI ","is ","fun"};int i = 0;args = minfo.env->NewObjectArray(len,minfo.env->FindClass("java/lang/String"),0);for(i=0;iNewStringUTF(sa[i]);minfo.env->SetObjectArrayElement(args,i,str);}//minfo.env->GetStringArrayRegion(args,0,10,buf);//jintArray jmsg = {1,2,3};//minfo.env->NewStringUTF("msg okey! return string");jint index = 0;minfo.env -> CallObjectMethod(jobj,minfo.methodID,args,index);}/* 测试用方法,无返回类型,有java类型的int[]和int参数方法 */isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","testArr", "([II)V"); if (isHave) {jint buf[]={7,5,8,9,3};jintArray jintArr; //定义jint数组jintArr = minfo.env->NewIntArray(5);minfo.env->SetIntArrayRegion(jintArr,0,5,buf);jint index = 0;minfo.env -> CallVoidMethod(jobj,minfo.methodID,jintArr,index);}/* 测试用方法,无返回类型,有java类型的byte[]和int参数方法 */isHave = JniHelper::getMethodInfo(minfo,"com/cocoa/HiWorld","testArr", "([BI)V"); if (isHave) {jbyte buf[]={7,5,8,9,3};jbyteArray jbyteArr; //定义jbyte数组jbyteArr = minfo.env->NewByteArray(5);minfo.env->SetByteArrayRegion(jbyteArr,0,5,buf);jint index = 0;minfo.env -> CallVoidMethod(jobj,minfo.methodID,jbyteArr,index);}
0 0
- JNI在C++与java间传递各种数据格式举例
- 通过JNI在JAVA与C程序中传递参数
- JNI:在java和c之间进行数据传递
- JNI:在java和c之间进行数据传递
- 在java和c之间进行数据传递 之 JNI
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android JNI实现Java与C的数据传递
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Android使用JNI实现Java与C之间传递数据
- Java与C之间通过JNI传递中文字符串
- Android使用JNI实现Java与C之间传递数据 .
- Android使用JNI实现Java与C之间传递数据
- 欢迎使用CSDN-markdown编辑器
- ebs 12.1 oa framework
- WordPress建站和搭独立博客
- loadView,viewDidLoad,viewDidUnload用法 与区别
- web开发(九)之Hibernate分页查询
- JNI在C++与java间传递各种数据格式举例
- MVP模式在Android开发中的应用
- session的使用方法
- Eclipse Debug不为人知的秘密
- git配置
- 不同状态下的button
- 抽象类与接口的区别于联系
- ZTree的使用
- 区间覆盖问题