- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是第一次使用 JNI。我有这个问题:在我的java代码中,有一个对象具有另一个对象(由我定义)的数组作为字段。现在,我需要从 native 代码设置此对象数组字段。我该怎么办?
提前谢谢您! :)
安吉拉
<小时/>我的java代码:
public class MyClass {
private MyObject[] array;
....
}
我需要从 C++ 设置array
。
最佳答案
我假设您从 Java 作为 object
传递了一个 JNIEnv *env
和一个 MyClass
对象,并且您的类不在包中.
首先我们需要查找 MyObject
对象的一些类和构造函数:
jclass cls_MyClass = env->FindClass("MyClass");
jfieldID fld_MyClass_array = env->GetFieldID(cls_MyClass, "array", "[LMyObject;");
jclass cls_MyObject = env->FindClass("MyObject");
jmethodID ctr_MyObject = env->GetMethodID(cls_MyObject, "<init>", "(I)V");
现在我们构造一个大小为 10 的数组并用实例填充它:
jobjectArray arr = env->NewObjectArray(10, cls_MyObject, nullptr);
for (int i = 0; i < 10; i++) {
jobject elem = env->NewObject(cls_MyObject, ctr_MyObject, i);
env->SetObjectArrayElement(arr, i, elem);
env->DeleteLocalRef(elem); // Keep amount of local references constant
}
最后我们将它分配给array
字段:
env->SetObjectField(obj, fld_MyClass_array, arr);
关于java - JNI : set jobjectArray from c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60837236/
在我的函数中,我试图获取已通过 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
我是一名优秀的程序员,十分优秀!