如果我的Android NDK项目使用.c文件而不是.cpp我无法解析JNIEnv *中的任何函数。以下是我尝试使用它的方法:
(*env)->GetCharArrayElements(chrs, 0);
我也尝试过:
GetCharArrayElements(env, chrs, 0);
env->GetCharArrayElements(chrs, 0);
这令人沮丧,因为我有一些我希望包含的c库项目,但如果我有.cpp文件,那么库需要以某种方式移植,我想避免这种情况。任何帮助/想法都会很棒。
这是我的Android.mk:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := NDKDemo
LOCAL_SRC_FILES := NDKDemo.c
include $(BUILD_SHARED_LIBRARY)
修改
以下是我宣布JNIEnv *
的方法#include <jni.h>
JNIEXPORT void JNICALL Java_com_atd_ndkdemo_NDKDemo_charManip(JNIEnv* env, jobject obj, jcharArray chrs)
jchar* cchar0 = GetCharArrayElements(chrs, 0);
jchar* cchar1 = (*env)->GetCharArrayElements(env, chrs, 0);
jchar* cchar2 = (*env)->GetCharArrayElements(chrs, 0);
jchar* cchar3 = env->GetCharArrayElements(chrs, 0);
}
有趣的是, cchar0 在我尝试编译之前不会抱怨,然后eclipse告诉我它无法再次解决。