我试图用ndk-build构建c ++代码,但我一直收到此错误base operand of '->' has non-pointer type 'JNIEnv <aka _JNIEnv>'
我在google的前两页尝试了所有解决方案但没有运气,ndk对我来说并不好。
nativemain.h
#ifndef NATIVEMAIN_H
#define NATIVEMAIN_H
#include <string.h>
#include <jni.h>
extern "C"
{
JNIEXPORT jstring JNICALL Java_com_ndktest3_MyRenderer_stringFromJNI( JNIEnv* env,
jobject thiz );
}
#endif
nativemain.cpp
#include <nativemain.h>
JNIEXPORT jstring JNICALL Java_com_ndktest3_MyRenderer_stringFromJNI( JNIEnv* env,
jobject thiz )
{
return env->NewStringUTF("Hello from JNI !");
}
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := nativemain
LOCAL_SRC_FILES := nativemain.cpp
include $(BUILD_SHARED_LIBRARY)
答案 0 :(得分:0)
尝试稍微更改语法
我认为错误是错过使用' - &gt;'操作者
“。
{
return env->NewStringUTF("Hello from JNI !");
}
尝试将env转换为像这样的指针
{
return (*env)->NewStringUTF(env, str);
}
其中str是预定义的字符串,例如您的hello消息。
将此帖子视为交叉引用:Do I need to clean up the char* passed to NewStringUTF?