2010-12-27 8 views
5

Z tego co rozumiem, SWIG ma owijać C++/C, aby pojawił się w Javie, a javah ma zaimplementować pewne funkcje java w C++ (inaczej natywne funkcje).
Czy istnieje narzędzie, które może utworzyć opakowanie C++ na klasę Java, tak aby wywołujący. tego C++ wrapper nie trzeba się martwić o Java, na przykład
Wejście Java jestnarzędzie do generowania wrapperów C++ ponad klasę Javy

class hw { 
    public void hi() { 
     System.out.println("Hello World"); 
    } 
    } 

Narzędzia wyjścia hw.hh (a nawet więcej. C++ pliki), które mogą być wykorzystywane jako :

hw * h = nowy hw (/ * JEnv */env);
h-> hi();

Czy istnieje narzędzie, które może to zrobić?

+0

Czy spodziewasz się, że to opakowanie będzie obsługiwać wirtualną maszynę Java? To nie jest trywialne. –

+0

@Bgen Voigt: Z tego, co przeczytałem, myślę, że to dużo kodu standardowego .. może być nietrywialne, ale coś, co można zrobić za pomocą narzędzia. Wszystkie istniejące narzędzia są zorientowane na używanie java as framework, a kod C++ na bibliotekę .. starałem się robić coś odwrotnego .. java jak libraray, które C++ wywoła jak i kiedy będzie potrzebne. .. Mam wrażenie, że tego typu narzędzie można zrobić za pomocą interfejsu API java reflection! – vrdhn

Odpowiedz

4

Dostępne są następujące opcje, w porządku rosnącym, w stosunku do Ciebie.

  • Ręcznie napisany kod JNI napisany przez klientów Twojej klasy Java.
  • Ręcznie pisane opakowania JNI napisane przez Ciebie dla klientów Twojej klasy.
  • JACE-generowane owijki. JACE to darmowe narzędzie. Ostatnia wersja była w 2008 roku; nie jestem pewien, czy rozwój jest kontynuowany.
  • JunC++ion-generowane owijki. Ta komercyjna biblioteka zapewnia najlepsze wyniki przy najmniejszym wysiłku na rzecz rozwoju. Obsługuje wywołania zwrotne Java, z klasami C++ implementującymi interfejsy Java. Autor jest bardzo czuły i bardzo miły. Istnieje jednak tag ceny, a będziesz mieć pewność co do kosztów wdrożenia.
2

Kiedyś ten produkt dawno temu, http://www.codemesh.com/products/junction/

Będzie to zrobić dokładnie, co chcesz.

Tylko jedno zastrzeżenie, użyłem go prawie 6 lat temu. Nie jestem związany z tym produktem.

+0

. wygląda na to, że strona jest wyłączona ... ale dobrze wiedzieć, że jestem jedyną osobą, która ma problem (-: – vrdhn