Android Studio NDK 返回 jint

标签 android android-ndk java-native-interface

我已成功遵循本教程 https://www.youtube.com/watch?v=kFtxo7rr2HQ了解如何使用 Android Studio 构建 NDK 应用。

该教程使用了一个public native String HelloJNI();

该字符串在 HelloJNI.c 文件中设置

#include "com_example_myapplication_MainActivity.h"
/* Header for class com_example_myapplication_MainActivity */

/*
 * Class:     com_example_myapplication_MainActivity
 * Method:    HelloJNI
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_HelloJNI
  (JNIEnv *env, jobject obj)
  {
(*env)->NewStringUTF(env, "Hello from jni");
}

并在运行时加载

static{
    System.loadLibrary("HelloJNI");
    }

现在我正在尝试做同样的事情,但检索 int 不是 string public native int getintONE();

我按照教程中的相同步骤操作,一切正常,现在我的 getintONE.c 读取

#include "com_example_myapplication_MainActivity.h"
/*
 * Class:     com_example_myapplication_MainActivity
 * Method:    getintONE
 * Signature: ()I
 */
JNIEXPORT jint JNICALL com_example_myapplication_MainActivity_getintONE
   (JNIEnv *env, jobject obj)

什么是等价物

JNIEXPORT jstring JNICALL Java_com_example_myapplication_MainActivity_HelloJNI
  (JNIEnv *env, jobject obj)
  {
(*env)->NewStringUTF(env, "Hello from jni");
}

返回一个整数,而不是一个字符串。

我在这里阅读了很多问题,阅读了教程和文档,我在研究中看到并尝试过的大部分内容都是返回示例、jint 数组、将 jint 转换为字符串,以及在我看来更多涉及高级主题。

提前致谢

最佳答案

jint 是一种原始类型,因此如果您包含了 jni.h,您可以简单地从函数中返回一个 - 不需要像使用 NewStringUTF() 那样分配对象对于一个字符串。

JNIEXPORT jint JNICALL com_example_myapplication_MainActivity_getintONE(JNIEnv *env, jobject obj) {
      return 1;  //or anything that can be cast to a jint
}

关于Android Studio NDK 返回 jint,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30266741/

相关文章:

android - 如何使 listview 和 GridLayout 可滚动

java - Android:looper/handler vs. Java Observer?

android - 如何在 android 中使用 super SDK 将文件写入外部存储?

安卓NDK : Undefined reference error

java - 从 C++ 启动时正确关闭 JVM

java - 在 JAR 文件和运行时库路径中包含子项目 gradle 构建输出

java - 使用监视器输入 : How should i call synchronised method?

Android GCM - 由于 IllegalStateException 8.0,WakefulBroadcastReceiver.startWakefulService 崩溃

java - LinearLayout换行而不是连接

c++ - 在 C++ 中将 REST API 连接代码移植到 Android NDK