У меня есть два источника:
- xml-файл, содержащий определения нескольких сотен структур данных, в основном состоит из полей, состоящих из простых типов данных (например,
int
, short
, boolean
, enum
), и
- заголовочный файл c, содержащий те же структуры данных, что и структуры c. (Я не могу изменить этот заголовочный файл или структуры c.)
У меня также есть библиотека, написанная на языке c, которая может использовать эти структуры c для выполнения определенной задачи.
Наконец, у меня есть Java-приложение, которому нужно как-то использовать эту библиотеку.
В настоящее время я генерирую Java-классы из xml-файла, представляющего структуры данных, теперь я "просто" должен как-то предоставить их библиотеке.
Мой текущий подход - генерировать jni-код, вызывать c-функцию для каждой структуры из Java, принимая сгенерированный класс Java в качестве параметра. Затем сгенерируйте c-код, который принимает классы Java, и заполните соответствующие поля в c-структурах.
Это хороший подход? У кого-нибудь есть предложения по более простому подходу?
Я рассматриваю возможность использования сокетов и, например, protobuf , но я не вижу в этом ничего проще.
Заранее спасибо за любые предложения.