Comment puis-je utiliser une bibliothèque C ++ à partir de node.js?
javascript
c++
node.js
binding
MaiaVictor
la source
la source
extension
. ExtensionRéponses:
Regardez node-ffi .
la source
Il y a maintenant une nouvelle réponse à cette question. SWIG , à partir de la version 3.0, semble fournir des générateurs d'interface javascript pour Node.js, Webkit et v8.
J'utilise beaucoup SWIG pour Java et Python depuis un certain temps, et une fois que vous comprenez comment fonctionne SWIG, il n'y a presque aucun effort (par rapport à ffi ou l'équivalent dans le langage cible) nécessaire pour interfacer le code C ++ avec les langages SWIG les soutiens.
À titre d'exemple, disons que vous avez une bibliothèque avec l'en-tête myclass.h:
Pour utiliser cette classe dans node, vous écrivez simplement le fichier d'interface SWIG suivant (mylib.i):
Créez le fichier de liaison binding.gyp:
Exécutez les commandes suivantes:
Maintenant, en exécutant le nœud à partir du même dossier, vous pouvez faire:
Même si nous devions écrire 2 fichiers d'interface pour un si petit exemple, notez que nous n'avons pas eu à mentionner le
MyClass
constructeur ni lasayHello
méthode n'importe où, SWIG découvre ces choses et génère automatiquement des interfaces naturelles.la source
std::vector<>
par exemple, juste%include "std_vector.i"
), et vous serez en mesure de le manipuler côté javascript d'une manière quelque peu maladroite. Notez que cette approche est toujours beaucoup plus facile et plus sûre que d'écrire vous-même FFI.Vous pouvez utiliser une extension node.js pour fournir des liaisons pour votre code C ++. Voici un tutoriel qui couvre cela:
http://syskall.com/how-to-write-your-own-native-nodejs-extension
la source
Vous pouvez utiliser emscripten pour compiler du code C ++ en js.
la source
Il existe de nouvelles façons de connecter Node.js et C ++. S'il vous plaît, pillez Nan .
EDIT Le moyen le plus rapide et le plus simple est nbind . Si vous souhaitez écrire un add-on asynchrone, vous pouvez combiner la
Asyncworker
classe de nan.la source
Voici un article intéressant sur la mise en place de votre C ++ sur le Web avec Node.js
la source
Faites attention à swig et C ++: http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn8
Il est rare qu'une classe C ++ soit limitée à un seul fichier .h.
De plus, les versions de swig prenant en charge JavaScript sont swig-3.0.1 ou version ultérieure.
la source
foo::bar
toute façon. La définition d'un membre de classe concerne la mise en œuvre; les wrappers générés par SWIG concernent uniquement l'interface.