我想使用JNI将对象从c ++返回到java代码 我不需要使用它的方法,只是阅读它的字段。 我该怎么办? 这个类就是这样的:
class MyOutputClass
{
public:
Array<SomeOtherClass> m_objects1;
Array<YetAnoterClass> m_objects2;
}
Array是我的一类,但我将使用java数组:)
答案 0 :(得分:3)
如果要将C ++对象传递给Java,则不能。 但是您可以在本机中创建一个Java对象,然后从您的本机方法返回它 这将是这样做的:
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;
}
您可以在ctor中传递数据,也可以访问对象的字段并进行更改。 BTW。我没有编译上面的代码。但它不应包含太多错误。
答案 1 :(得分:0)
http://code.google.com/p/protobuf/或http://msgpack.org/之类的内容不会为您完成这项工作吗?我们的想法是在您的java / c ++代码中创建服务器/客户端并开始移动对象?整体沟通非常有效,所以我怀疑速度是个问题。