test.c
#include <string.h>
#include <jni.h>
#include <android/log.h>
#include <stdio.h>
#include <stdlib.h>
jstring Java_com_test_b_hello_hellostr( JNIEnv* env,jobject thiz )
{
return (*env)->NewStringUTF(env, "Hello from JNI !");
}
このコンパイルは問題ありません。しかし、test.cpp に変更すると、コンパイルにエラーが発生します。
libb/jtest.cpp: 関数 '_jstring* Java_com_test_b_hello_hellostr(JNIEnv*, _jobject*)': jtest.cpp:108: エラー: '->' のベース オペランドに非ポインター型 '_JNIEnv' があります make[1]: * [出力/.../obj/SHARED_LIBRARIES/libdrvb_intermediates/jtest.o] エラー 1
なんでこんなの?アプリとcの違いはありますか?
システムの jni.h ファイルをチェックします: alps\dalvik\libnativehelper\include\nativehelper\jni.h
.
.
void (*ReleaseStringChars)(JNIEnv*, jstring, const jchar*);
jstring (*NewStringUTF)(JNIEnv*, const char*);
jsize (*GetStringUTFLength)(JNIEnv*, jstring);
...
jstring NewStringUTF(const char* bytes)
{ return functions->NewStringUTF(this, bytes); }
.....