0

我正在尝试使用 ndk-build 构建 c++ 代码,但我不断收到此错误base operand of '->' has non-pointer type 'JNIEnv <aka _JNIEnv>'

我已经在谷歌的前 2 页上尝试了所有解决方案,但没有运气,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 !");
}

安卓.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE    := nativemain
LOCAL_SRC_FILES := nativemain.cpp

include $(BUILD_SHARED_LIBRARY)
4

1 回答 1

0

尝试稍微改变你的语法

我相信错误是'->'运算符的误用

{
    return env->NewStringUTF("Hello from JNI !");
}

尝试像这样将 env 转换为指针

{
    return (*env)->NewStringUTF(env, str);
}

其中 str 是预定义的字符串,例如您的 hello 消息。
检查这篇文章作为交叉参考:我需要清理传递给 NewStringUTF 的 char* 吗?

于 2013-06-04T17:20:51.860 回答