Возврат объектов из C ++ в Java - PullRequest
       18

Возврат объектов из C ++ в Java

0 голосов
/ 27 августа 2011

Я хочу вернуть объект из c ++ в код Java, используя JNI.
Мне не нужно использовать его методы, а просто читать его поля. Как я могу это сделать?
Этот класс просто что-то вроде этого:

class MyOutputClass
{
public:
 Array<SomeOtherClass> m_objects1;
 Array<YetAnoterClass> m_objects2;
}

Массив - мой класс, но вместо него я буду использовать массив java:)

Ответы [ 2 ]

3 голосов
/ 27 августа 2011

Если вы хотите передать объект 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 или получить доступ к полямвашего объекта и изменить их.КСТАТИ.Я не скомпилировал код выше.Но он не должен содержать слишком много ошибок.

0 голосов
/ 27 августа 2011

Разве что-то вроде http://code.google.com/p/protobuf/ или http://msgpack.org/ не выполнит работу за вас?Идея состоит в том, чтобы создать сервер / клиент в вашем коде java / c ++ и начать перемещать объекты вокруг?Общение в целом довольно эффективное, поэтому я сомневаюсь, что скорость будет проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...