Кто-нибудь пытался вернуть объект protobuf из C ++ в Java через JNI?

У меня есть Java-код, который вызывает в собственный код C ++ через JNI. Сегодня результат, полученный кодом C ++, возвращается в виде строки XML.

Я хотел бы заменить его объектом Protocol Buffers.

Теперь у меня есть два варианта после создания объекта PB:

  • Сериализуйте его в строку и верните
  • Попробуйте и вернуть сам объект.

Кто-нибудь пробовал второй вариант? Это будет работать? Есть потенциальные проблемы с этим?

Благодарю.

1

Решение

Ваш вопрос несколько неясен о том, что подразумевается под «Объект буферов протокола«Я предполагаю, что вы имеете в виду объект сообщения, сгенерированный из .прото подать protoc, Тогда я смею сказать, что это не сработает. Пока ПБ форма сериализации действительно кросс-платформенный и кросс-языковой, реализация нет. Хотя вы можете вызывать методы на объектах Java в C (++) благодаря обширному массиву функций C, предоставляемых JNI, не существует обратного интерфейса, чтобы сделать то же самое из Java (для объектов C ++).

Но в любом случае объекты PB — не что иное, как инструментальные структуры. Инструментарий полезен только для сериализации PB. Если вы не будете использовать сериализацию, PB для вас совершенно бесполезен. Если ваш XML имеет, по крайней мере, несколько стабильную структуру (в любом случае PB не будет содержать неизвестную структуру), почему бы вам не отразить это в простом объекте Java, передать его на стороне C ++ через JNI и заполнить там, используя все упомянутые функции JNI? ?

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector