[调试]NDK方式编写C++
2016-09-13 15:26
302 查看
JNIEXPORT jint JNICALL Java_com_example_duanjiwei_ndkdemoapp_MainActivity_initProc(JNIEnv *env, jclass obj, jstring jstr){ jclass cls = env->GetObjectClass(obj); // 得到代表Java类的jclass jfieldID fid1 = env->GetStaticFieldID(cls, "cstr", "Ljava/lang/String");//得到Java端保存分类器路径String静态变量的jfiledID jstring jst1 = (jstring)env->GetStaticObjectField(cls, fid1); //得到Java端的String实例jstring const char* cstring = env->GetStringUTFChars(jstr, NULL); //得到利用UTF-8编码的C++字符串,此字符串串为存储分类器的路径 env->ReleaseStringUTFChars(jstr, cstring); //释放拷贝的内存 bool bIsLoad = face_cascade.load( cstring ); if( bIsLoad == false ){ return -1; } return 0; }
jclass clsstring = env->FindClass("java/lang/String"); //获取java.lang.String的类型 jstring strencode = env->NewStringUTF("utf-8"); //转码 //获取clssting(byte[],String) 的构造器,将本地byte[]数组转换成一个新String jmethodID mid = env->GetMethodID(clsstring, "getBytes", "(Ljava/lang/String;)[B"); jbyteArray barr = (jbyteArray)env->CallObjectMethod(jstr, mid, strencode); //建立barr数组 jsize alen = env->GetArrayLength(barr); //获取数组barr的长度 jbyte* ba = env->GetByteArrayElement(barr, JNI_FALSE); //将jbyteArray转换成jbyte* char* rtn; if(alen>0){ rtn = (char*)malloc(alen + 1); memcpy(rtn, ba, alen); rtn[alen] = 0; } env->ReleaseByteArrayElement(barr, ba, 0);
相关文章推荐
- C++.Net在Release方式下单步调试时需要修改一些设置,否则变量会有错位或乱码,切记!
- 驱动程序编写及虚拟机调试方式简介
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS) (转)
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 以 Console 方式运行、调试、编译 .Net 编写的 Windows 服务
- ADT+CDT VS +NDK +Eclipse 编写C++程序
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS XCode)
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 在编写个人函数的时候,你将会受到C++中的一条基本的原则的限制:在默认的情况下,变量只能以值传递的方式传递给函数。这句话的意思是:被传递到函数的只是变量的值,永远不是变量的本身。
- 编写完之后如何调试运行 用Microsoft Visual C++ 6.0可以编写C#程序吗
- Windows环境下android平台native调试,从java debug 到 C++ (NDK DEBUG)
- Linux环境下android平台调试native代码, 从java debug 到C++ (NDK DEBUG)
- Eclipse + Android + NDK+ C++ Windows 下调试
- eclipse编译调试java与ndk c++的混合代码
- 以 Console 方式运行、调试、编译 .Net 编写的 Windows 服务
- c++调试信息添加方式
- eclipse编译调试java与ndk c++的混合代码
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)
- 使用eclipse调试cocos2d-x C++ 代码(编写+真机调试,放弃VS)