JNI: How to pass "unsigned char*" von C++ zu java

Habe ich ein "unsigned char *" und ich will es pass auf den Java-code mittels JNI
Ich habe es versucht, in der folgenden Weise

jstring test1;  
std::string str(reinterpret_cast<const char*>(ucptest));  
test1 = env->NewStringUTF(str.c_str());

wo 'ucptest' ist 'unsigned char *' und hat die ascii-Werte.
dieser code funktioniert und ich kann erfolgreich zu bestehen, jstring, die Java-code, aber in den Last call, den ich sehe, Absturz in der JVM.

Was könnte der mögliche Grund für den crash? Absturz Unstimmigkeiten, was bedeuten könnte, dass Speicher Korruption.

Kann jemand empfehlen, einen besseren Weg, um pass 'unsigned char*' in Java?

jede Hilfe ist willkommen.

Dank

  • Sie versuchen, eine Zeichenfolge übergeben, nicht einen Zeiger, der auf so so zu sagen. Wird ein Zeiger übergeben, in Java wäre so einfach wie Gießen es in einen integer, aber das wäre sinnlos, weil Java-code, der konnte nichts mit dem Mauszeiger.
  • Nein, ich habe legacy-code mit " unsigned char*", die ich übergeben muss java
  • ist ucptest Null beendet?
  • ucptest ist nicht null-terminiert, aber ich habe eine Länge variable als Teil der gleichen Struktur als ucptest und ich Lesen werden, nur len char ' s aus ucptest.
InformationsquelleAutor Aqura | 2011-01-17
Schreibe einen Kommentar