Nie widziałem tego nigdzie (a może jestem jsut prosty, nie widząc tego), ale czy istnieje sposób na użycie JNI do zwrócenia obiektu c/C++ i użycia tego obiektu w java?Czy mogę odwoływać się do obiektów C++ w kodzie Java za pomocą JNI?
Na przykład (bardzo prosty):
class simpleClass{
...
private:
int intVar;
public:
int getIntVar();
void setIntVar(int someNum);
...
}
W moim kodu java, jak bym go o zrobienie czegoś jak:
...
simpleClass sc = new simpleClass();
sc.setIntVar(9);
System.out.println(sc.getIntVar());
...
zdaję sobie sprawę że jest to bardzo uproszczony przykład, ale I” Po prostu szukam pojęcia - klasa, którą mam na myśli, która jest w C++ jest bardzo duża i staram się unikać tworzenia TON wrapper metod ...
Jeśli to nie jest w porządku, po prostu chmiel Aby zapisać kilka dni kodowania lol
Należy pamiętać, że szablony C++ są nieistotne dla tego pytania, ponieważ szablony są kompilowane w C++. JNI będzie musiał obsługiwać klasy utworzone z tych szablonów, które nie różnią się od zwykłych klas. –
@Dan Jeśli napiszesz klasę szablonu, która nie jest tylko nagłówkiem, musisz być w stanie powiedzieć kompilatorowi, jak utworzyć nową wersję klasy w kodzie klienta, więc myślę, że kompilator musi również wiedzieć o szablonach (choć nie mam pojęcia, czy jest to wymagane przez standard - nigdy nie musiałem tego robić w rzeczywistości). – Voo
@ Voo Potrzebuje definicji szablonu podczas kompilacji, aby wygenerować instancję. Po wygenerowaniu dla każdego potrzebnego użytego typu kod obiektowy jest taki, jak gdybyś napisał klasy dla każdego typu. AFAIK bez dołączania pliku cpp, do którego nie możesz odwoływać się do szablonu, który nie znajduje się w twojej jednostce tłumaczeniowej, chyba że definicja jest całkowicie wbudowana z tego samego powodu. – AJG85