Ответ 1
Первый пример - синтаксис С++ и будет работать только в программах на С++. Второй - для программ на C.
Причина, по которой эти две разные, заключается в том, что в С++ JNIEnv является классом, а функции являются функциями-членами объекта env, а в C JNIEnv - указателем на структуру. Поскольку то, что вы получаете в качестве параметра, является указателем на JNIEnv, в C вы должны разыгрывать его для доступа к членам структуры, поэтому вместо env
вы должны использовать *env
.
Это должно быть описано в любом тексте о том, как использовать JNI, но вы также можете найти его, прочитав код в файле заголовка.