Какой самый простой способ вызвать метод Java из C ++? - PullRequest
4 голосов
/ 10 июля 2009

Я пишу программу на C ++, которая должна уметь читать сложные и эзотерические типы файлов. У меня уже есть Java-программа для обработки этих файлов, которая включает в себя функциональность для преобразования их в более простые форматы файлов. Моя идея заключается в том, что всякий раз, когда моей программе необходимо прочитать информацию из сложного файла, заставить ее вызвать метод Java, чтобы преобразовать ее в более простой тип файла, затем записать ее во временный файл, который моя программа может легко прочитать. Файлы достаточно малы, чтобы производительность была приемлемой. Я пишу свою программу на Qt и запускаю ее на компьютере с Windows Vista.

Я изучал использование Java Native Interface, но чем больше я изучаю его, тем больше мне кажется, что я должен избегать его любой ценой. Есть ли лучший способ сделать это, или я должен продолжать подход JNI?

Ответы [ 5 ]

6 голосов
/ 10 июля 2009

Как часто вам нужно это делать? Если это не так часто, вы можете раскошелиться и сделать это там. Просто сгенерируйте командную строку, чтобы сделать это. JNI работает, но это немного сложно - настроить. После того, как он настроен, он должен работать нормально.

3 голосов
/ 10 июля 2009

Почему бы не создать исполняемый файл jar для алгоритма java?

2 голосов
/ 10 июля 2009

Используйте GCJ , чтобы превратить Java в библиотеку, на которую вы можете ссылаться.

Это может быть такая же боль, как и JNI, но, по крайней мере, вы больше не будете загружаться или зависеть от JRE.

1 голос
/ 10 июля 2009

Если GCJ является опцией для вас, это позволит вам скомпилировать вашу Java-программу в собственный код, который может быть связан с вашей программой на C ++ (опять же, специально для g ++) в виде библиотеки, плюс файл заголовка который содержит прямые CNI отображения всех Java-материалов на C ++ - пакеты в пространства имен, классы в классы, методы в функции-члены и т. д.

1 голос
/ 10 июля 2009

Вас может заинтересовать SWIG . «SWIG - это инструмент разработки программного обеспечения, который связывает программы, написанные на C и C ++, с различными языками программирования высокого уровня. SWIG используется с различными типами языков, включая распространенные языки сценариев, такие как Perl, PHP, Python, Tcl и Ruby»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...