回答:
ここに私がJNIを始めたときに見つけたいくつかの便利なリンクがあります
http://en.wikipedia.org/wiki/Java_Native_Interface
http://download.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html
あなたの問題に関してこれを使うことができます
JNIEXPORT void JNICALL Java_ClassName_MethodName(JNIEnv *env, jobject obj, jstring javaString)
{
const char *nativeString = env->GetStringUTFChars(javaString, 0);
// use your string
env->ReleaseStringUTFChars(javaString, nativeString);
}
nativeString
一定に保つ必要がありますか?
const
理由のために宣言されています。あなたの問題への正しい応答がにあるstrcpy
からconst char*
にchar*
。これにより、必要な変更可能性が提供されますchar*
。
最初にジェイソンロジャースの回答に感謝します。
ではAndroidの && CPPこれは次のようになります。
const char *nativeString = env->GetStringUTFChars(javaString, nullptr);
// use your string
env->ReleaseStringUTFChars(javaString, nativeString);
このエラーを修正できます:
1.エラー: '->'のベースオペランドに非ポインタタイプ 'JNIEnv {aka _JNIEnv}'があります
2.エラー: '_JNIEnv :: GetStringUTFChars(JNIEnv *&、_jstring *&、bool)'の呼び出しに対応する関数がありません
3.エラー: '_JNIEnv :: ReleaseStringUTFChars(JNIEnv *&、_jstring *&、char const *&)'の呼び出しに対応する関数がありません
4.「env-> DeleteLocalRef(nativeString);」を追加します 最後に。
(*env)->
C ++ではなくCを使用している場合にのみ必要です。