안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요.. 안드로이드 개발을 시작하고 있습니다.
다름이 아니라 NDK 가지고 뭔가를 해야 하는데.. 이것 저것 Test하다가 잘 안되서 질문 좀 드릴께요..
아주 간단한 것입니다.
ndk 예제인 hello-jni 에서.. c 소스인 hello-jni.c 를 hello-jni.cpp로 바꾸었습니다. (물론 Android.mk에도 cpp로 고쳤구요)
그리고 build를 하니,
(*env)->NewStringUTF(env, "Hello from Android !"); 여기에서 error가 나네요.. ㅠㅠ
/home/kaos26/Work/android-ndk-r4/samples/hello-jni/jni/hello-jni.cpp: In function '_jstring* Java_com_example_hellojni_HelloJni_stringFromJNI(JNIEnv*, _jobject*)':
/home/kaos26/Work/android-ndk-r4/samples/hello-jni/jni/hello-jni.cpp:40: error: base operand of '->' has non-pointer type '_JNIEnv'
이런 error 가 나는데요..
왜 이런걸까요??
cpp에서는 env 관련된 함수들을 사용 못하는 건가요??
혹시나 해서 위 code를 NDK 예제중 cpp 예제인 hello-gl2 예제의 cpp 파일위 위 code를 넣으니 역시 같은 error가 납니다.
cpp에서 jni 함수의 인자인 env를 사용하는 방법 좀 알려주세요.. ㅠㅠ
에러메세지를 보면 env가 포인터니까 (*env)는 포인터가 아니라서 '->' 를사용하니 에러가 났네요
env->NewStringUTF(env, "Hello from Android !");
이렇게 하면 될듯 합니다.