- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Java 函数,它将接收可变数量的参数,并且在 JNI 中我接收 jobjectArray
中的所有参数。现在我的问题是:如何以原始形式返回参数(它们可以是字符串、 double 组、整数...)?
编辑:(基于评论)
这是详细信息。这是我的函数声明:
private native double gsl_stats_all_in_one(String...str);
这是我的函数调用:
variance = this.gsl_stats_all_in_one((String)message.getBody().get("function2"),
Arrays.toString(data), "1","5");
这是函数定义:
JNIEXPORT jdouble JNICALL Java_org_bel_MyJMSListenerAction_gsl_1stats_1all_1in_1one (JNIEnv *env, jobject obj, jobjectArray arr)
现在我的 arr 拥有所有 4 个参数,其中第一个是字符串,第二个是 double ,第三个和第四个是整数。我怎样才能恢复所有四个参数的原始形式。
最佳答案
jobjectArray 不包含整型、 double 或任何原始类型。它包含对象。 jintArray 包含整数等。您需要重新考虑您的问题。如果您尝试声明 native 可变参数方法,则最终参数确实是一个 jobjectArray 并且它包含对象。如果你的Java代码传递int、double等,它们会被转换为Integer、Double等,所以你在native方法中收到的始终是一个对象。您可以在运行时通过常用的 JNI 调用询问每个项目的类。
关于java - 如何取回 jobjectArray 的原始元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8294291/
在我的函数中,我试图获取已通过 JNI 传递给 C++ 类的字符串数组的大小,但我一直收到错误:“jobjectarray has not been declared”。这是我的 C++: int t
我有一个具有以下 JNI 方法的方法 JNIEXPORT void JNICALL Java_com_android_Coordinates_Updates ( JNIEnv * env, jobje
我有一个 Java 函数,它将接收可变数量的参数,并且在 JNI 中我接收 jobjectArray 中的所有参数。现在我的问题是:如何以原始形式返回参数(它们可以是字符串、 double 组、整数.
我是第一次使用 JNI。我有这个问题:在我的java代码中,有一个对象具有另一个对象(由我定义)的数组作为字段。现在,我需要从 native 代码设置此对象数组字段。我该怎么办? 提前谢谢您! :)
//***** 新问题。 ***** 当将结构传递给线程时,下面存在内存泄漏。不明白为什么,因为如果在主线程中直接调用线程内的代码不会泄漏内存。 class PeopleCounting{ //
我有 jobject 并且它里面有 jobjectArray,我正在使用 GetObjectField 获取 jobjectArray 然后转换它,但它不起作用任何人都可以帮忙吗? jfieldID
如何通过 jni 正确构造和传递不同对象的数组?我似乎无法将 jint 转换为 jobject。我原来的功能是: extern "C" JNIEXPORT jint ... Func(...) {
我正在使用 JNI 从 java 传递一个 jobjectarray(实际上是一个 byte[][])。 我想将其转换为 uint8_t* 或 vector (最好是后者)形式的可用“字节数组”,以便
我在使用 C++ 的 JNI 中工作,我创建了一个方法,其中一系列参数作为 jobjectarray 传递到我的 native 方法。我想使用这些参数在 JNI 中调用构造函数。但是,NewObjec
所以我决定将dll导入到我的java代码中。 它的作用是计算邻居矩阵。问题是我不知道如何将矩阵作为 jobobjectArray 返回。 JNIEXPORT jobjectArray JNICALL
请原谅我,因为我是 c++ jni 环境的新手 我正在尝试通过 JNI 桥将 String[] 数组从 Java 传递到 C++,同时遵循我在此处找到的提供此代码段的提示: void MyJNIFun
如果我尝试从 JNI 将 jstrings 传递给 jobjectArray 中的 Java,我就会出错。我对此进行了多次研究,它应该有效。但是我的签名 [Ljava/lang/String 不起作用
这个问题在这里已经有了答案: How to return an array from JNI to Java? (4 个答案) 关闭 7 年前。 我想在 c 中创建一个新数组,将原始数组加倍。这是我
我想使用 JNI 将字符串数组从 C 返回到 Java。我发现我可以这样使用 NewObjectArray(): JNIEXPORT jobjectArray JNICALL Java_Array_i
我想通过 JNI 将字符串数组从 C++ 传递给 Java,意味着将 String[] 返回给 java。 当我在 C++ 中打印 char* 时是正确的,但是当我在 Java 中打印 String
我正在开发一个调用 native dll 库的 Java 应用程序。我调用的 c++ 方法的代码: JNIEXPORT jobjectArray JNICALL Java_Surf_TopSurfWr
我使用以下代码来处理 Android 和 JNI 中的 JNI 数组。 但是我发现返回“jobjectArray”无法在 API 21/22 (Android 5.0) 上完成,但可以在 API 19
我是一名优秀的程序员,十分优秀!