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

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

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

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

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

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

SWIG vs JNI и JNA

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

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

Ответ 7

Как вызвать функцию C/C++ из Java, тогда вы можете использовать собственный интерфейс Java (JNI), являющийся частью платформы Java, - это интерфейс, который обеспечивает связь между приложениями Java, работающими на виртуальной машине Java (JVM), и собственными приложениями. или библиотеки, написанные на других языках программирования (например, C, C++). Вы можете использовать некоторые ниже URL для примера.

http://malinsky.eu/blog/how-to-call-a-c-function-from-java/ https://www3.ntu.edu.sg/home/ehchua/programming/java/JavaNativeInterface.html