Как я могу использовать библиотеку C ++ из node.js?
javascript
c++
node.js
binding
MaiaVictor
источник
источник
extension
. РасширениеОтветы:
Посмотрите на node -ffi .
источник
На этот вопрос есть свежий ответ. SWIG , начиная с версии 3.0, похоже, предоставляет генераторы интерфейса javascript для Node.js, Webkit и v8.
Некоторое время я широко использую SWIG для Java и Python, и как только вы поймете, как работает SWIG, почти не потребуется усилий (по сравнению с ffi или эквивалентом на целевом языке) для взаимодействия кода C ++ с языками, на которых SWIG опоры.
В качестве небольшого примера предположим, что у вас есть библиотека с заголовком myclass.h:
Чтобы использовать этот класс в узле, вы просто напишите следующий файл интерфейса SWIG (mylib.i):
Создайте файл привязки binding.gyp:
Запустите следующие команды:
Теперь, запустив узел из той же папки, вы можете:
Несмотря на то, что нам нужно было написать 2 файла интерфейса для такого небольшого примера, обратите внимание, что нам не нужно было нигде упоминать
MyClass
конструктор илиsayHello
метод, SWIG обнаруживает эти вещи и автоматически генерирует естественные интерфейсы.источник
std::vector<>
например, просто%include "std_vector.i"
), и вы сможете манипулировать им на стороне javascript несколько неудобным образом. Обратите внимание, что этот подход по-прежнему проще и безопаснее, чем писать FFI самостоятельно.Вы можете использовать расширение node.js для привязки вашего кода C ++. Вот один учебник, который охватывает это:
http://syskall.com/how-to-write-your-own-native-nodejs-extension
источник
Вы можете использовать emscripten для компиляции кода C ++ в js.
источник
Появились более новые способы соединения Node.js и C ++. Пожалуйста, обыщите Нан .
РЕДАКТИРОВАТЬ Самый быстрый и простой способ - это nbind . Если вы хотите написать асинхронное дополнение, вы можете комбинировать
Asyncworker
класс из nan.источник
Вот интересная статья о том, как перенести ваш C ++ в Интернет с помощью Node.js
источник
Остерегайтесь swig и C ++: http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn8
Редко бывает, чтобы класс C ++ был ограничен только одним файлом .h.
Кроме того, версия swig, поддерживающая JavaScript, - это swig-3.0.1 или новее.
источник
foo::bar
. Определение члена класса связано с реализацией; все обертки, которые генерирует SWIG, связаны с интерфейсом.