Задать вопрос
TheCreator
@TheCreator
Бездельник

Как получить данные из dll на линуксе?

Есть скомпилированная под windows библиотечка (dll). Получает на вход строку, возвращает тоже строку.
Есть сервер под centos, на котором крутится сервис на node.js которому нужно пользоваться этой библиотекой.
Какой, на ваш взгляд, оптимальный способ решения проблемы? На ум приходят магические слова "wine" и "vps с windows", но отдельную машину под это дело выделять не хочется (библиотечка считает много цифр, нынешний сервер достаточно мощный, а брать в аренду машину сравнимой мощности под windows выльется в копеечку). А wine, даже если понять, как в нём что запускать, то совсем непонятно как оттуда данные вытаскивать используя node.

В общем нужен ваш совет, в какую сторону двигаться и можно ли каким-то образом тянуть данные напрямую, без написания прослоек (я понимаю, что вариант "делаем веб-сервис на windows-сервере, к нему обращаемся, он дёргает библиотеку" будет работать, но на текущий момент он кажется сложноватым, хочется узнать, есть ли более изящные решения).
  • Вопрос задан
  • 1441 просмотр
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 4
EvilsInterrupt
@EvilsInterrupt
System programming, Reversing Engineering, C++
А почему нельзя поднять Windows на VirtualBox ?
Ответ написан
Комментировать
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Можно парсить двоичный формат PE (Portable Executable) он хорошо специфицирован и все DLL в этом формате. Для этого будут полезен класс Buffer https://nodejs.org/api/buffer.html и тут есть статья blog.paracode.com/2013/04/24/parsing-binary-data-w... и еще библиотека https://www.npmjs.com/package/binary-parser для упрощения жизни. Еще есть вариант искать парсер PE для линукса и запускать его из ноды через командную строку и потом парсить его вывод в консоль, это может быть проще, но добавляет зависимости. Я бы парсил сам.
Ответ написан
@Eddy_Em
Простейший вариант — написать CGI самостоятельно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы