【发布时间】:2017-11-27 05:03:59
【问题描述】:
我有 gradle 应用模块:
externalNativeBuild {
cmake {
path "CMakeLists.txt"
}
}
使用 CMakeLists.txt:
cmake_minimum_required(VERSION 3.4.1)
add_library( # Sets the name of the library.
native-lib
SHARED
src/main/cpp/native-lib.cpp )
add_library( # Sets the name of the library.
keys
SHARED
src/main/cpp/keys.cpp )
find_library( # Sets the name of the path variable.
log-lib
log )
target_link_libraries( # Specifies the target library.
native-lib
${log-lib} )
和keys.cpp:
#include <jni.h>
JNIEXPORT jstring JNICALL
Java_com_my_app_App_getApplicationKey(JNIEnv *env, jobject instance) {
return (*env)-> NewStringUTF(env, "PuTy0uR4Ppl1C4TioNk3yH3re");
}
我在我的 cpp 中不断遇到以下问题:
错误:(5, 18) 错误:成员引用类型“JNIEnv”(又名“_JNIEnv”)为 不是指针;你的意思是用'.'吗?
或者如果我在 Android Studio 中滚动鼠标,它会说:
对 JNIEnv 应用 '->' 运算符而不是指针
我在这里缺少什么,NewStringUTF 是 jni.h 库的一部分,但为什么它没有“链接”?
【问题讨论】:
-
在 C++ 中你应该使用
env->,而不是(*env)->。 -
yodabest 兄弟,谢谢!
标签: android cmake android-ndk ndk-build