Как вызвать C ++ из Java? - PullRequest
       2

Как вызвать C ++ из Java?

24 голосов
/ 29 сентября 2011

Я хотел вызвать метод C ++ из Java. Я читал о JNI, но не понимаю, как получить все библиотечные файлы и где я должен их хранить, чтобы запустить программу из командной строки.

Есть ли способ вызвать метод C ++ из самого Eclipse, потому что я использую его для запуска классов Java.

Ответы [ 7 ]

6 голосов
/ 29 сентября 2011

Хотя в прошлом я использовал мостовые соединения JNI-C ++ (хотя и немного), это может быть немного уродливо.Возможно, вы захотите использовать SWIG , чтобы помочь вам генерировать весь грязный код котельной пластины.

6 голосов
/ 29 сентября 2011

Если JNI слишком сложный, вы можете взглянуть на JNA .В первом случае вам нужно создать собственный код-обертку (на C или C ++), чтобы объединить Java и собственный (C ++ / C / ...) код.Во втором случае это делается во время выполнения (поэтому вам нужен только код Java + config).

2 голосов
/ 16 сентября 2015

Я использовал JNA раньше для простых интерфейсов, и это было просто и достаточно элегантно. Тем не менее, рекомендуется иметь сложный интерфейс, поэтому лучше использовать SWIG.

Есть несколько хороших ответов, которые сравнивают SWIG с JNI и JNA. Прошло много времени с тех пор, как вопрос был задан.

SWIG против JNI и JNA

1 голос
/ 21 марта 2019

Я использую JNR / FFI https://github.com/jnr/jnr-ffi, который, как я обнаружил, быстрее, чем JNA, и легче, чем SWIG. По скорости он настолько близок к JNI, но менее подвержен ошибкам.

1 голос
/ 28 марта 2018

JavaCPP - https://github.com/bytedeco/javacpp

Обеспечивает эффективный доступ к нативному C ++ внутри Java. Под капотом он использует JNI, поэтому работает со всеми реализациями Java SE.

Гораздо проще, чем JNA / JNI

1 голос
/ 11 мая 2017

JNA может использоваться вместо JNI.

Все, что вам нужно, это загрузить JNA jar (https://github.com/java-native-access/jna#download), который долженбыть включенным в ваш проект Java.

Вам необходимо указать расположение вашей библиотеки c ++ в свойствах вашего проекта.

  • Щелкните правой кнопкой мыши проект
  • Выполнить
  • В параметрах виртуальной машины укажите это -Djava.library.path = "C: Ваше местоположение dll" .

Посетите этот сайт для примера.который также имеет исходный код для проекта Java и c ++, чтобы знать, как это работает.(http://blog.mwrobel.eu/how-to-call-dll-methods-from-java/#a_downloads)

0 голосов
/ 21 мая 2018
How to call a C/C++ function from Java then you can use
Java Native Interface (JNI), part of the Java platform, is an interface that enables communication 
between Java applications running on a Java Virtual Machine (JVM) and native applications or libraries
written in other programming languages (e.g. C, C++).
you can use some below urls for as examples.
http://malinsky.eu/blog/how-to-call-a-c-function-from-java/
https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...