Получение обратных вызовов из java в C++ и перехват исключений java в C++ через JNI
У нас есть библиотека java (. JAR), которую мы используем в приложении C++ через JNI, поэтому мы можем вызывать методы класса Java из C++. Однако мы также хотели бы перехватывать исключения, создаваемые методами Java в нашем коде C++, который вызывает методы Java. Как это сделать с помощью JNI?
Другая стоящая перед нами проблема заключается в том, что мы также хотели бы получать обратные вызовы из библиотеки Java в C ++. В частности, мы хотели бы сделать следующее: в Java есть интерфейс, то есть в нем есть только определения методов, а не реализация. Теперь мы хотим реализовать этот интерфейс Java на C ++ через JNI, поэтому методы интерфейса будут реализованы в коде C ++, а затем объект класса C ++, который реализует этот интерфейс, должен быть отправлен в качестве параметра в вызове метода из C ++ на Java, так что это похоже на регистрацию класса обратного вызова с C ++ на Java. Таким образом, всякий раз, когда код Java должен отправлять уведомления коду C ++, он может вызывать методы зарегистрированного класса C ++. Как этого добиться в JNI?
Что я уже пробовал:
Я не могу попробовать, но это возможно или нет?
Richard MacCutchan
Единственный способ поймать исключения - это иметь универсальный catch all в вашем Java-коде. Затем для этого потребуется собрать всю информацию, относящуюся к исключению, и вызвать функцию C++ для ее обработки.
Не уверен насчет обратных вызовов, но это может быть возможно; вам нужно попробовать несколько экспериментов.