测试.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]: * [out/.../obj/SHARED_LIBRARIES/libdrvb_intermediates/jtest.o] 错误 1
为什么会这样?app和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); }
.....