Я постоянно вижу указатель интерфейса env, используемый с разыменованием и без него, например
env
env->DoSomething(arguments)
против
(*env)->DoSomething(env, arguments)
Они на самом деле разные вещи? Один из более старой реализации JNI?
Это одно и то же; просто немного магии макросов. Лучший (первый) синтаксис включен в контексте C ++.
Это разница между написанием jni-кода на C и C ++ из wikipedia :
Обратите внимание, что код C ++ JNI синтаксически немного чище, чем код C JNI, поскольку, как и Java,C ++ использует семантику вызова метода объекта.Это означает, что в C параметр env разыменовывается с помощью (* env) -> и env должен быть явно передан в методы JNIEnv.В C ++ параметр env разыменовывается с помощью env->, а параметр env неявно передается как часть семантики вызова метода объекта.