Как вызвать С++ из 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