分类: [JNI]

Cocos2dx编译错误收集

make.exe: *** No rule to make target `jni/.cpp’, needed by `obj/local/armeabi/objs-debug/cocos2dcpp_shared/.o’. Stop. make.exe: *** Waiting for unfinished jobs…. 这个问题,是由于cpp文件中带有空格。 make: *** No rule to make target  常见版本:https://blog.csdn.net/roserose0002/article/details/38397537 乾坤大挪移,全部搬过来: 在用Tornado编译的时候,遇到编译器报如下错误:  make: *** No rule to make target `e:/Tornado2.2_Project/FTTB/utils/h/nos/nos_cli.h’, neede d ......

android.mk中引用第三方库的方法

一、集成第三方jar包: 1.在项目目录下创建目录libs(不创建也行,一会儿指向对应路径就好),将第三方的jar包放进去。 2.在Android.mk文件中进行配置: include $(CLEAR_VARS) LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := smartphotolib:../../libs/smartphotolib.jar #前面为自定义的名(umeng_message_push),起什么名都可以,“:”后面的为jar包在项目下对应的路径。 include $(BUILD_MULTI_PREBUILT) 3.引用,在LOCAL_STATIC_JAVA_LIBRARIES中加入smartphotolib 即可 LOCAL_STATIC_JAVA_LIBRARIES := smartphotolib 或 ......

Android NDK之JNI陷阱

Android NDK(native develop kit)内容。这里只想记录下JNI(java native interface)经常遇到到问题。 问题1.  忘记delete local reference。带New到方法(如:NewByteArray)这样到方法比较好辨认,需要手动调用DeleteLocalRef()来释放(返回值除外)。比较特殊的一个方法是:GetByteArrayELement必须要调用ReleaseByteArrayElements进行释放。当然如果你只是取bytearray中到byte,那么完全可以用GetByteArrayRegion实现。 问题2. 没有NewGlobalRef。 在不同线程调用java方法,需要保存jobject对象,这时需要对jobject对象做全局引用, ......

JNI的某些数组和字符串类型转换

jbytearray转c++byte数组 C代码   jbyte * arrayBody = env->GetByteArrayElements(data,0); jsize theArrayLengthJ = env->GetArrayLength(data); BYTE * starter = (BYTE *)arrayBody; jbyteArray 转 c++中的BYTE[] C代码   //jbytearray strIn jbyte * olddata = (jbyte*)env->GetByteArrayElements(strIn, 0); jsize  oldsize = env->GetArrayLength(strIn); BYTE* bytearr = (BYTE*)olddata; int len = (int)oldsize; C++中的BYTE[]转jbyteArray C代码   //nOutSize是BYTE数组的长度 BYTE pData[ ......