LINUX.ORG.RU

Создать экземпляр C++ класса из Java

 , ,


0

2

Есть C++ класс виду

class CppClass {
 CppClass(int param) {}
 void method1(){}
 int method2(int param){ return param;}
}
Необходимо из Java-интерфейса создать экземпляр этого класса и дергать его методы.
Как это можно сделать?
В результате должно получится что-то вроде:
class JClass {
 CppClass cppClass;//??
 JClass(int param) { 
  cppClass = new CppClass(param);//??
}

 void method1() {
  cppClass.method1();
 }
 int method2(int param) {
  return cppClass.method2(param);
 }

★★★★

Ответ на: комментарий от maxcom

В текущем виде не получится, так как в С++ классе создаются экземпляры других классов, происходят сложные вычисления. Или имеется ввиду? :

CppClass *cppClass;
createClass(int p) {
 cppClass = new CppClass(p);
}

int method2(int param) {
 return cppClass.method2(param);
}
, где method2, method1, createClass - будут native методами в Java.

ymuv ★★★★
() автор топика
Последнее исправление: ymuv (всего исправлений: 2)
Ответ на: комментарий от ymuv

А скомпилить цэпэпэ и сделать класс-интерфейс к этому бинарнику на жабе?

anonymous
()

в java коде

static {
 System.loadLibrary(".....");
}
...
native void method1();
native int method2(int param);
для конструктора, например, так:
native private void init(int param);
JClass(int param) {
 init(param);
}
создать для этого хедер (javah) и вызывать соответствующие c++ методы

TheAnonymous ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.