Слияние кода завершено, страница обновится автоматически
package org.img.processing;
import org.smirkcat.loaddll;
/**
* @author smirklijie
* @date 2016-07-07 17:27:05
* @description Пример использования Java для вызова C++-интерфейсов
*/
public class ImgJni {
// Указатель на функцию, адрес указателя на Linux 64-bit составляет 8 байт, поэтому требуется 64-битное хранение, которое должно быть инициализировано функцией init()
public long ptrNative;
public ImgJni() {
ptrNative = init();
}
public ImgJni(String path) {
ptrNative = initPath(path);
}
/**
* Обработка изображения, возвращает информацию
* @param ptrNative
* @param img
* @return
*/
public native String processing(long ptrNative, byte[] img);
}
``````java
/**
* Инициализация класса и модели файла
* @param path
* @return
*/
public native long initPath(String path);
/**
* Инициализация класса
* @return
*/
public native long init();
/**
* Удаление C++-класса, убедитесь, что он больше не используется; иначе вам потребуется повторно выполнить init(), чтобы присвоить значение ptrNative
* Может быть выполнен только один раз, второй вызов приведёт к ошибке, освобождение памяти происходит только один раз
* @return
*/
public native void delete(long ptrNative);
// Статический вызов выполняется только один раз, загружает локальную библиотеку, скомпилированный динамический модуль следует поместить в src/main/resources
// Здесь используется моя реализация проекта loaddll для загрузки, можно использовать стандартные методы для загрузки
static {
try {
JarDllJava.loadLib("libimgjni", "/dll/", ImgJni.class);
System.out.println("Загрузка динамической библиотеки libimgjni завершена");
} catch (Exception e) {
System.err.println("Не удалось загрузить динамическую библиотеку libimgjni, сообщение об ошибке: " + e.getMessage());
}
}
### Соответствующий C++ код смотрите в исходных файлах
### Ссылки для справки
+ [http://www.2cto.com/kf/201207/143036.html](http://www.2cto.com/kf/201207/143036.html)
+ [http://blog.csdn.net/imyfriend/article/details/9117917](http://blog.csdn.net/imyfriend/article/details/9117917)
[1]: https://git.oschina.net/smirkcat/scalacpptest.git
[2]: https://git.oschina.net/smirkcat/loaddll.git
```
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )