JNI i referencja do obiektu C++

0

Witam

Badam możliwości JNI. Głównie hobbystycznie. Czy jest jakiś sposób, by korzystać z obiektów w c++? Nie chodzi mi o to, że taki obiekt oprócz funkcji ma swój stan. Dane. Chciałbym je pamiętać. Chciałbym mieć możliwość posiadania gdzieś referncji do takiego obiektu.
Nie chcę w plikach .java wywoływać metod z tego obiektu c++ bezpośrednio. Chcę tylko taki obiekt zapamiętać i przekazać go jako wskaźnik do funkcji natywnej, a taka metoda już wyłuska obiekt i zawoła odpowiednie funkcje operaujące na ... polach tego obiektu.

0

Postaram Ci sie pomóc tylko napisz mi jakby to w C++ wyglądało. Bo referencje do obiektu jaknajbardziej da się zrobić.

0

Można trochę "cheatować" przekazując sobie pointery:

long *getObjectPointer(){
// wyszukujemy sobie "obiekt" po stronie c
return (long)objectPointer;
}

Następnie po stronie javy tworzymy proxy:

class CObjectProxy{

  private long address;
  public CObjectProxy(long address){
    this.address =address;
  }
   public void method(){
      return _method(address);
   }

  private native void _method(long address);
  // reszta metod;
}

i w kodzie metody JNI najpierw szukasz obiektu po adresie, a potem wołasz metodę:

// sygnatura  z jakiegoś tutka 
JNIEXPORT jstring JNICALL Java_JNIFoo_native_method (JNIEnv *env, jobject obj, long address)
{
  object=  *address; // czy jakoś tak. C/C++ nie znam jakoś specjalnie poza tym że wiem, że są ;)
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1