¿Cómo puedo usar una biblioteca C ++ de node.js?
javascript
c++
node.js
binding
MaiaVictor
fuente
fuente
extension
. ExtensiónRespuestas:
Mira nodo-ffi .
fuente
Hay una nueva respuesta a esa pregunta ahora. SWIG , a partir de la versión 3.0 parece proporcionar generadores de interfaz javascript para Node.js, Webkit y v8.
He estado usando SWIG ampliamente para Java y Python durante un tiempo, y una vez que entiendes cómo funciona SWIG, casi no hay esfuerzo (en comparación con ffi o el equivalente en el idioma de destino) necesario para conectar el código C ++ a los idiomas que SWIG Soportes.
Como un pequeño ejemplo, supongamos que tiene una biblioteca con el encabezado myclass.h:
Para utilizar esta clase en el nodo, simplemente escriba el siguiente archivo de interfaz SWIG (mylib.i):
Cree el archivo de enlace vinculante.gyp:
Ejecute los siguientes comandos:
Ahora, ejecutando el nodo desde la misma carpeta, puede hacer:
Aunque necesitábamos escribir 2 archivos de interfaz para un ejemplo tan pequeño, tenga en cuenta que no tuvimos que mencionar el
MyClass
constructor ni elsayHello
método en ninguna parte, SWIG descubre estas cosas y genera automáticamente interfaces naturales.fuente
std::vector<>
por ejemplo, solo%include "std_vector.i"
), y podrá manipularlo en el lado de JavaScript de una manera algo incómoda. Tenga en cuenta que este enfoque sigue siendo mucho más fácil y seguro que escribir FFI usted mismo.Puede usar una extensión node.js para proporcionar enlaces para su código C ++. Aquí hay un tutorial que cubre eso:
http://syskall.com/how-to-write-your-own-native-nodejs-extension
fuente
Puede usar emscripten para compilar código C ++ en js.
fuente
Hay nuevas formas de conectar Node.js y C ++. Por favor, saquea a Nan .
EDITAR La forma más rápida y fácil es nbind . Si desea escribir un complemento asincrónico, puede combinar la
Asyncworker
clase de nan.fuente
Aquí hay un artículo interesante sobre cómo llevar su C ++ a la web con Node.js
fuente
Con éxito con swig y C ++: http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn8
Rara vez se tiene una clase C ++ limitada a un solo archivo .h.
Además, las versiones de swig que admiten JavaScript son swig-3.0.1 o posterior.
fuente
foo::bar
todos modos. La definición de un miembro de la clase tiene que ver con la implementación; Los contenedores que genera SWIG tienen que ver con la interfaz.