1. Напишите тестовый класс Java

2. Используйте тестовый класс Java для создания заголовочного файла C (у меня нет базы по C или C++. Я не уверен, является ли код, не относящийся к JAVA, который появится позже, C или C++. Поэтому в руководстве я называю его C.)

3. Используйте заголовочный файл C для написания кода на C

4. Сгенерируйте библиотеку C

5. Тест вызова Java

Шаг 1: Напишите тестовый класс Java

Код выглядит следующим образом:

package com.aijiao.test;

public class JNIDemo {
    
    //定义一个方法,该方法在C中实现
    public native void testHello();
    
    public static void main(String[] args){
        //加载C文件
        System.loadLibrary("TestJNI");
        JNIDemo jniDemo = new JNIDemo();
        jniDemo.testHello();
    }

}

Шаг 2: Используйте класс Java для создания заголовочного файла C

Команда генерации выглядит следующим образом:

javah -classpath . -jni com.aijiao.test.JNIDemo

Эту команду нужно выполнить в каталоге bin проекта тестового класса Java.

На следующем рисунке показан сгенерированный заголовочный файл.

Шаг 3: Используйте Visual Studio для написания кода на C

1. Выберите Файл -> Создать -> Проект

2. Выберите (Win32), введите имя проекта и адрес проекта и нажмите OK.

3. Сразу нажмите Далее.

4. Здесь выберите DLL, Пустой проект, затем нажмите Готово.

5. Структура проекта создается, как показано ниже.

6. Щелкните правой кнопкой мыши по папке Исходные файлы, выберите Добавить -> Класс.

7. Нажмите Add напрямую.

8. Введите имя класса и нажмите Finish. (класс C++)

9. В каталоге include вашего каталога JDK есть файл jni.h, в подкаталоге win32 каталога include — файл jni_md.h, а в каталоге bin проекта Java — заголовочный файл C. Скопируйте их вместе в каталог TestJNI проекта C: (Текущий проект называется TestJNI. В каталоге проекта есть ещё один каталог TestJNI. Каталог проекта -> TestJNI -> jni.h, com_aijiao_test_JNIDemo.h, jni_md.h) Как показано ниже:

Текущий каталог — это каталог проекта.

Скопированные jni.h, com_aijiao_test_JNIDemo.h и jni_md.h

10. Щёлкните правой кнопкой мыши по папке Header Files проекта C, выберите Add -> Existing Item

11. Выберите jni.h, com_aijiao_test_JNIDemo.h и jni_md.h

12. Откройте файл com_aijiao_test_JNIDemo.h

13. Измените #include <jni.h> на #include "jni.h", и сообщение об ошибке исчезнет.

14. Напишите следующий код в файле TestJNI.cpp:

Код:

#include "com_aijiao_test_JNIDemo.h"
#include <iostream>
#include <stdio.h>

JNIEXPORT void JNICALL Java_com_aijiao_test_JNIDemo_testHello
(JNIEnv *, jobject) {
    printf("this is C++ print");
}

15. Настройте проект C, щёлкните правой кнопкой мыши по Solution и выберите Properties.

16. Выполните следующую настройку.

Шаг 4: Щёлкните правой кнопкой мыши по проекту и выберите Build. Выводится следующая информация.

Ниже представлена сгенерированная библиотека DLL.

Шаг 5: Выполните следующие настройки в проекте Java.

Укажите путь, где находится библиотека DLL (имя файла указывать не нужно), и сохраните.

Запустите класс Java, и результат будет следующим.

Автор: aijiao

Эл. почта: 2585838470@qq.com

URL: https://my.oschina.net/aijiaoer0624/blog/1142876