Из -за потребностей проекта я недавно изучил метод вызова Java DLL. Как назвать это написано здесь для легкой ссылки в будущем:
Принятый метод - JNI: нативный интерфейс Java, называемый JNI, является частью платформы Java и может использоваться для взаимодействия с кодом, написанным на Java на других языках.
Ниже приведена схематическая схема работы JNI, извлеченной из Интернета:
Общее описание: сначала создайте класс в Java, генерируйте .class через Javac, а затем генерируйте .h из Javah; Затем копируйте .h в VC и реализуйте конкретные функции по VC.
После составления и прохождения, генерируйте DLL, поместите DLL в проект Java и используйте его, и он закончен.
Давайте поговорим о конкретных шагах (включая примеры):
1. Создайте класс Java: загрузите DLL, заявьте, что метод DLL следует использовать, и конкретная реализация отвечает за DLL; Код заключается в следующем:
открытый класс java2cpp {static {System.LoadLibrary ("javacallcpp");} public int int dll_add (int a, int b); // Добавить публичный родной int dll_sub (int a, int b); // Уменьшение общественного родного int dll_mul (int a, int b); // Несколько общественных местных int dll_div (int a, int b); // Разделите публичную статическую void main (string args []) {int sum = 0; java2cpp test = new java2cpp (); sum = test.dll_add (2, 4); system.out.println ("java call cpp dll result:" + sum);}}2. Сгенерируйте файл .h: CMD в каталог java2cpp.java и сделайте следующее:
Шаг 1: javac java2cpp.java генерирует java2cpp.class
Шаг 2: javah java2cpp генерирует файл заголовка java2cpp.h со следующим содержанием:
Примечание. Содержание файла заголовка Java2cpp.h не может быть изменен, в противном случае возникнет ошибка.
3. Создание динамической библиотеки VC: создать динамическую библиотеку C/C ++, названный Javacallcpp, импортировать Java2cpp.h и реализовать его метод:
#include "java2cpp.h" #include "dllapi.h" jniexport jint jnicall java_java2cpp_dll_1add (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_add (a, b); return var;} jnie jnipex Java_java2cpp_dll_1sub (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_sub (a, b); return var;} jniexport jint obj obj_java2cpp_dll_1mul (jnienv *engal 0; var = dll_api_mul (a, b); return var;} jniexport jint jnicall java_java2cpp_dll_1div (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b);Добавьте dll_api_add (), вычтите dll_api_sub (), умножьте dll_api_mul () и делить dll_api_div ().
Реализовано в файле, имя файла - dllapi.cpp, и реализация следующая:
int dll_api_add (int a, int b) {return (a+b);} int dll_api_sub (int a, int b) {return (ab);} int dll_api_mul (int a, int b) {return (a*b);} int dll_api_div (int a, int b) {return (a/b);} int dll_api_div (int a, int b) {return (a/b);В настоящее время проект по -прежнему собирает, потому что есть ошибка, включающая <jni.h>, вам нужно добавить каталог, в котором находится JNI, следующим образом:
4. Скомпилируйте проект Dynamic Library: генерируйте javacallcpp.dll и скопируйте эту динамическую библиотеку в каталог проекта Java:
5. Используйте DLL: запустите программу Java, результат заключается в следующем:
На данный момент Java Call DLL был завершен.
Суммировать
Выше приведено метод библиотеки Dynamic Java - JNI реализован, вызывая C/C ++, который редактор представляет вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!