Да, но с учетом ограничений Java и C ++, а также проблем с лицензированием от Microsoft, проще всего было бы статически связать все, что вам нужно, в одну массивную библиотеку JNI, по одной на платформу. Это можно сделать, изменив каталоги в верхней части файла opencv_core.java
и указав на них статические библиотеки, а также с помощью опции -o myMassiveJNIlib
JavaCPP (см. Файл build.xml
JavaCV). В ваших приложениях просто вызовите System.load ('path / to / myMassiveJNIlib') перед использованием JavaCV. Мы также можем вызвать Loader.extractResource()
для соответствующего библиотечного файла, включенного в файл JAR (возможно, с именами файлов, основанными на Loader.getPlatformName()
), чтобы извлечь его во временный файл, прежде чем вызывать System.load()
для него. Это то, что JavaCPP делает автоматически для каждого класса, когда нам не нужно объединять все в один большой массивный файл.
EDIT: последние версии JavaCPP и JavaCV могут извлекать и загружать из ресурсов собственные библиотеки, как показано в примере FaceApplet . Больше не нужно связываться со статическими библиотеками.