tl; плагин dr: C ++ должен вызывать библиотеку Java .jar. Как развернуть это для пользователей без лишней головной боли?
Я пишу плагин Qt для приложения Qt. Плагин должен совершать звонки в существующую библиотеку Java. Это необходимо для кросс-платформенной (Win, Mac, Linux) и архитектуры (32-битной и 64-битной Intel, без PPC).
Я получил простой пример компиляции и запуска JNI "hello world". Я обновил сценарий CMake на «find_package (JNI REQUIRED)» и т. Д., Чтобы он компилировался с заголовком jni.h и динамически связывался с библиотекой JVM.
По крайней мере, в Windows, CMake хорошо работает над поиском подходящей JVM для использования во время компиляции. Меня беспокоит поиск нужного JRE (jvm.dll и т. Д.) Во время выполнения, поскольку у меня меньше контроля над компьютерами пользователя.
Как это будет работать, когда я отправлю плагин своим пользователям? Им потребуется JRE для правильной архитектуры. Но это не означает, что каталог (и) JRE lib будут находиться на их пути. Если это не так, плагин просто вылетает и не загружается.
Также проблематично, что в Windows 64-битный JDK установил jvm.dll для:
C:\Program Files\Java\jre7\bin\server\jvm.dll
Но 32-битный JDK установил его на:
C:\Program Files (x86)\Java\jre7\bin\client\jvm.dll
Я понимаю разницу между PF и PFx86, но я не понимаю, что такое сервер / клиент. Это действительно разные JRE?
Будет ли это работать, если я скомпилировал / связал с одной версией JRE, а у пользователя другая версия?
Полагаю, в Linux / Mac все будет проще, но я еще не дошел до этого.
Любая помощь приветствуется. Я не привязан к использованию JNI, но не могу позволить себе компилятор за 2000 $, чтобы превратить Java в библиотеку нативного кода (не то, чтобы у меня был исходный код в любом случае), и я слышал, что gcj может не справиться с задачей (и, вероятно, не сильно поможет в Windows).