I have a 'unsigned char *' and I want to pass it on to the Java code using JNI
I have tried it in the following way
jstring test1;
std::string str(reinterpret_cast(ucptest));
test1 = env->NewStringUTF(str.c_str());
where 'ucptest' is 'unsigned char *' and has ascii values in it.
this code works and I can successfully pass jstring to Java code, but in the load call I am seeing crash in JVM.
What could be the possible reason for the crash? crash is inconsistence, which could mean memory corruption.
Can someone suggest a better way to pass 'unsigned char*' to Java?
any help is appreciated.
Thanks
解决方案
I found the solution, and thought I would share the same, so that others could use it.
Initially I was converting char* to C++ String and then passing it to Java String. This was working just fine, until we had "0" in the string I was trying to convert. This was causing a crash.
Finally, I used a byte array to pass on the value to server. This is working perfectly.
jbyteArray jbArray = env->NewByteArray((int)call.len);
env->SetByteArrayRegion(jbArray, 0, (int)call.len, (jbyte*)call.data);