Как использовать собственную DLL Windows внутри JVM Linux

У меня есть простой API с собственными функциями (JNA) внутри файла DLL, который вычисляет только некоторые математические вещи. Я использую эту DLL внутри приложения JAVA, и все отлично работает на JVM Windows.

Проблема в том, что эта библиотека будет использоваться в среде Linux внутри Linux JVM, и версии *.so не будет.

Пару раз читал, что есть способ загрузить DLL с вином внутрь памяти и использовать оттуда но без пояснений как это сделать.

Может ли кто-нибудь подтвердить или опровергнуть этот подход для меня. И подскажите, пожалуйста, как это сделать, если это действительно возможное решение?

редактировать: может быть решение, которое описано в Как вызвать Wine dll из python в Linux? Можно ли как-то использовать ctypes?

С уважением, Вурми


person wurmi    schedule 13.10.2015    source источник
comment
(Возможно, вам будет проще перекомпилировать математический материал в Linux C или перенести его на Java, если у вас есть исходный код.)   -  person Rich    schedule 13.10.2015


Ответы (1)


Я думаю, что вы должны быть в состоянии сделать это, но я не могу найти пошаговое руководство, и я не сделал это сам. Попробуйте сделать следующее:

Удачи!

Надеюсь, кто-то, кто делал это раньше, даст более подробный ответ здесь. Если нет, обязательно опубликуйте, как это сделать, в качестве ответа, чтобы другие могли извлечь выгоду :-)

(ответ, на который вы ссылались, относится к библиотекам DLL, предоставляемым Windows, и Wine поставляется с их скомпилированными версиями.)

person Rich    schedule 13.10.2015
comment
Спасибо за помощь. попробую вашу идею. Это означает, что мне не нужно сильно менять свое Java-приложение. - person wurmi; 13.10.2015
comment
Ну, эта вики не смогла решить мою проблему. Фрагмент кода включает, например, файл windows.h. Это недоступно в среде Linux. Кроме того, компиляция с помощью wineg++ приводит к множеству ошибок, которые нелегко найти в гугле. Например. ожидаемый инициализатор перед токеном «.» WINE_DEFAULT_DEBUG_CHANNEL (foo.bar) - person wurmi; 13.10.2015
comment
Фрагмент кода включает, например, файл windows.h. Это недоступно в среде Linux. -- Я думаю, что он включен в WINE в Linux. - person Rich; 13.10.2015
comment
Попробуйте задать этот вопрос на winehq.org/mailman/listinfo/wine-users ? - person Rich; 13.10.2015