Saya telah melewati string URL dari kode Java ke C sebagai jstring
tipe data melalui penggunaan JNI. Dan metode perpustakaan saya membutuhkan char *
sebagai url.
Bagaimana saya bisa mengkonversi jstring
di char *
?
PS: Apakah ada keuntungan menggunakan jcharArray di C? (yaitu Meneruskan char []
alih-alih string dalam metode asli)
java
java-native-interface
Prasham
sumber
sumber
Jawaban:
Berikut adalah beberapa tautan berguna yang saya temukan ketika saya mulai menggunakan JNI
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
mengenai masalah Anda, Anda dapat menggunakan ini
sumber
nativeString
konstan?const
karena suatu alasan. Tanggapan yang benar untuk masalah Anda adalahstrcpy
mulai dariconst char*
ke achar*
. Itu akan memberi Anda perubahanchar*
yang Anda inginkan.Terima kasih jawaban Jason Rogers pertama.
Di Android && cpp harus seperti ini:
Dapat memperbaiki kesalahan ini:
1. error: operan dasar '->' memiliki jenis non-pointer 'JNIEnv {aka _JNIEnv}'
2. kesalahan: tidak ada fungsi yang cocok untuk panggilan ke '_JNIEnv :: GetStringUTFChars (JNIEnv * &, _jstring * &, bool)'
3. kesalahan: tidak ada fungsi yang cocok untuk panggilan ke '_JNIEnv :: ReleaseStringUTFChars (JNIEnv * &, _jstring * &, char const * &)'
4. tambahkan "env-> DeleteLocalRef (nativeString);" di akhir.
sumber
(*env)->
jika Anda menggunakan C, bukan C ++.