我想使用 JNI 将对象从 C++ 返回到 Java 代码。
我不需要使用它的方法,而只是阅读它的字段。
我该怎么做?
这个类就是这样的:
class MyOutputClass
{
public:
Array<SomeOtherClass> m_objects1;
Array<YetAnoterClass> m_objects2;
}
Array 是我的一个类,但我会改用 java 数组 :)
最佳答案
如果您想将 C++ 对象传递给 Java,则不能。
但是您可以在 native 中创建一个 Java 对象,然后从您的 native 方法中返回它。
这将像这样完成:
JNIEXPORT myJavaObj JNICALL Java_cls_getObj
(JNIEnv *env, jobject obj)
{
jclass myClass;
//Find your class
myClass = (*env)->FindClass(env, "()LMyJavaClass;");
jmethodID cons = env->GetMethodID(myClass, "<init>",
"(V)V");
jobject obj = env->NewObject(myClass, cons);
//Return the object.
return obj;
}
您可以在构造函数中传递数据,也可以访问对象的字段并更改它们。顺便提一句。我没有编译上面的代码。但它不应包含太多错误。
关于java - 将对象从 C++ 返回到 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7215549/