指针错误与c ++和ndk

时间:2013-05-27 23:59:38

标签: android c++ android-ndk

我试图用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)

1 个答案:

答案 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?