【发布时间】:2018-03-29 11:02:57
【问题描述】:
我有一个 Kotlin 类,它只是声明了一些 Kotlin 和 C/C++ 交互的方法:
class JNILib {
companion object {
external fun getAppId(): String
init {
System.loadLibrary("native-code")
}
}
}
但是我在声明本机方法时遇到了问题。我试过了
extern "C"
JNIEXPORT jstring JNICALL
Java_com_package_JNILib_getAppId(
JNIEnv *env, jobject /* this */){
// wrong
}
extern "C"
JNIEXPORT jstring JNICALL
Java_com_package_JNILib_Companion_getAppId(
JNIEnv *env, jobject /* this */){
// wrong
}
【问题讨论】:
-
Java_com_package_JNILib_00024Companion_getAppId怎么样?另一种方法是在 kotlin 中使用@JvmStatic注释该方法。那么 C++ 声明应该是Java_com_package_JNILib_getAppId(JNIEnv* env, jclass clazz). -
@Michael 使用
00024Companion有点奇怪,但我认为@JvmStatic是正确的答案。你能发表一个答案吗?
标签: android android-ndk kotlin kotlin-android-extensions