java - 将对象从 C++ 返回到 Java

标签 java c++ object java-native-interface

我想使用 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/

相关文章:

javascript - 循环遍历对象并设置为第二个对象javascript中的值

java - JTree:如何选择第一片叶子

java - Hibernate:错误 'foo' 中的未知列 'field list' - 从一个实体到同一父实体的两个 @ManyToOne 关系

java - ForEach 和 Facelets

javascript - 找到对象中最高值的键,然后将其发布到innerHTML

javascript - 子对象访问父对象的更好方法?

java - JSNI:JavaScriptObject 和 Element JSNI 函数参数的区别?

c++ - LowLevelKeyboardProc 和 KeyboardProc

c++ - 从文件中读取 SCons 环境设置

c++ - boost make_shared 接受一个 const 引用。有什么办法可以解决这个问题?