Недавно я сделал проект по распознаванию лиц на веб -странице и написал алгоритм распознавания лиц в C ++. Тем не менее, я должен использовать бэкэнд Java на веб -странице, которая включает в себя проблему Java Calling DLLS. Ниже приведен простой пример того, чего добился редактора, искав соответствующую информацию.
1. Первый шаг - создать новый класс в Java
Как показано на рисунке выше, обратите внимание на систему предложений. Загрузкалибрия ("javacallcpp");, который является кодом для загрузки файла DLL. Затем нам нужно реализовать метод сложения, вычитания, умножения и деления, определенного ниже в DLL.
2. Скомпилируйте файл, имя файла java2cpp.java , сначала составьте его в файл класса. Если вы используете Eclipse, файл был автоматически сгенерирован, в папке Bin в каталоге проекта. Скомпилируйте с командной строкой, откройте окно CMD, CD для каталога, где расположен файл .java, и выполните команду Javac Java2cpp.java, то есть генерируйте java2cpp.class
Затем выполните команду Javah Java2CPP, чтобы сгенерировать файл заголовка Java2Cpp.h, но этот шаг часто не сбои. Другой метод может добиться успеха. Введите каталог проекта Eclipse, введите папку Bin, выполните команду Javah -classpath. -jni Package name.class name (com.test.jni.java2cpp), а затем генерируйте com_test_jni_java2cpp.h
3. Создайте новый проект Win32 в VS, назвайте его: testJni, второй шаг заключается в следующем:
4. Скопируйте файл заголовка, сгенерированный на втором этапе в папку проекта, а затем импортируйте его.
5. Реализуйте метод в файле заголовка:
(1) Создайте новый файл заголовка dllapi.h, код заключается в следующем:
#include "com_test_jni_java2cpp.h" int dll_api_add (int a, int b); int dll_api_sub (int a, int b); int dll_api_mul (int a, int b); int dll_api_div (int a, int b);
(2) Создайте новый dllapi.cpp для реализации приведенного выше метода, код следующим образом:
#include "stdafx.h" #include <ioStream> #include "dllapi.h" int dll_api_add (int a, int b) {return (a + b);} int dll_api_sub (int a, int b) {return (a - b);} int dll_api_mul (int a, int b) {return (a - b);} int dll_api_mul (int a, int b) {ater (a - b);} int dll_api_mul (int a, int b) {a - b); Dll_api_div (int a, int b) {return (a / b);} (3) Добавьте код в testjni.cpp, чтобы реализовать метод com_test_jni_java2cpp.h. После добавления кода следующее:
// testjni.cpp: определяет функцию экспорта приложения DLL. //#Включите "stdafx.h" #include "testjni.h" #include "com_test_jni_java2cpp.h" #include "dllapi.h" // Это пример экспортных переменных testjni_api intestjni = 0; // является примером функций производства. Testjni_api int fntestjni (void) {return 42;} // Это конструктор экспортируемого класса. // Для получения информации об определениях класса см. Testjni.hctestjni :: ctestjni () {return;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1add (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_add (a, b); вернуть var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1sub (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_sub (a, b); вернуть var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1mul (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_mul (a, b); вернуть var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1div (jnienv *env, job obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b); вернуть var;}(4) Сгенерировать DLL, и вы можете найти TestJni.dll в папке отладки в папке проекта. Однако, поскольку мы требуем, чтобы DLL был назван Javacallcpp в Java, мы переименуем проект в Javacallcpp в это время, а затем восстанавливаем Javacallcpp. [Этот шаг не сможет генерировать, добавить путь следующим образом]
6 Вызов методов
Скопируйте javacallcpp.dll, сгенерированный на шаге 5 в папку бина под пути установки JRE и запустите программу Java. Результаты следующие:
Выше приведено полное описание того, как Java называет библиотеку C ++ DLL, которую редактор представил вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!