Comment puis-je utiliser une bibliothèque C++ de node.js?
Comment puis-je utiliser une bibliothèque C++ de node.js?
Le mot-clé est
Suivez ce lien. Il a fourni un exemple de programme et expliquées étape par étape. benfarrell.com/2013/01/03/...
extension
. Google c++ nodejs extensionSuivez ce lien. Il a fourni un exemple de programme et expliquées étape par étape. benfarrell.com/2013/01/03/...
OriginalL'auteur MaiaVictor | 2012-03-09
Vous devez vous connecter pour publier un commentaire.
Regarder nœud-ffi.
Je sais que c'est plus d'un an depuis ce commentaires, mais... est-il possible d'utiliser le C++ libs sans un wrapper C?
chirp chirp Toutes les mises à jour sur cette question^
OriginalL'auteur Vadim Baryshev
Il y a une nouvelle réponse à cette question maintenant. SWIG, à partir de la version 3.0, semble javascript interface générateurs pour Node.js, Webkit et v8.
J'ai été en utilisant RASADE largement pour Java et Python, pour un temps, et une fois que vous comprenez comment RASADE de travaux, il n'y a presque aucun effort(par rapport à l'institution financière étrangère ou l'équivalent dans la langue cible) nécessaires pour interfacer du code C++ pour les langues RASADE de soutien.
Comme un petit exemple, disons que vous avez une bibliothèque avec l'en-tête myclass.h:
Pour utiliser cette classe dans le nœud, il suffit d'écrire le suivant RASADE fichier d'interface (mylib.j'):
Créer le fichier de liaison de liaison.gyp:
Exécutez les commandes suivantes:
Maintenant, nœud en cours d'exécution à partir du même dossier, vous pouvez le faire:
Même si nous avons besoin de l'écrire 2 fichiers d'interface pour un petit exemple, notez comment nous n'avons pas mentionner le
MyClass
constructeur, ni lesayHello
méthode de n'importe où, GORGÉE découvre ces choses, et génère automatiquement des interfaces naturelles.SWIG est un outil étonnant en effet, mais c'est pas de la magie, et ce n'est pas un général de l'IA qui peut comprendre la sémantique de votre code C++ et de générer une interface respective. S'il vous plaît prêter attention à la façon dont C++et javascript de la sémantique, de l'appropriation de concepts et de gestion de durée de vie sont fondamentalement différents.
De sorte que vous pouvez afficher RASADE de deux façons: C'est un outil qui peut faire ce qu'il peut faire sortir de la boîte, et de jouer à ses règles. Que signifie, ne vous attendez pas à voir les tableaux javascript pop de C++ les fonctions qui retournent des tableaux. Ce que vous pouvez faire est d'envelopper votre fonction en C++ afin qu'elle retourne un objet qui se comporte comme un tableau (
std::vector<>
par exemple, juste%include "std_vector.i"
), et vous serez capable de manipuler sur le javascript côté dans un peu maladroit. Notez que cette approche est encore plus facile et plus sûr que l'écriture FFI vous-même.L'autre façon, vous pouvez utiliser GORGÉE, est de comprendre le mécanisme sous-jacente. Passer quelques mois de l'utiliser, apprendre ses fonctionnalités en profondeur. Ensuite, vous pouvez faire générer l'interface que VOUS souhaitez. Vous voulez qu'il renvoie un tableau javascript pour un C++ tableau, très bien, vous pouvez le faire, mais vous devez d'abord apprendre à exprimer la sémantique exacte que vous attendez dans une telle interface et assurez-vous qu'elle correspond bien à votre problème de domaine.
De toute façon, je vous recommandons de commencer avec la première approche, et affiner votre utilisation de SWIG sur le chemin. C'est vraiment une source d'inspiration pour l'étude de ce RASADE fait à votre code et comment vous pouvez le manipuler.
OriginalL'auteur enobayram
Vous pouvez utiliser un node.js extension de fournir des liaisons pour votre code C++. Voici un tutoriel qui couvre:
http://syskall.com/how-to-write-your-own-native-nodejs-extension
OriginalL'auteur Alex
Vous pouvez utiliser emscripten pour compiler du code C++ en js.
mais c'est toujours une idée qui mérite d'être vu. Les gens viennent à cette page pour différents types de projets dans la main. Je pense que Emscripten est une bonne option si vous avez le code C/C++ de base et souhaitez les utiliser en Nodejs.
OriginalL'auteur N3UR0CHR0M
Il y a de nouvelles façons de se connecter Node.js et C++. S'il vous plaît, butin à Nan.
MODIFIER
La manière la plus rapide et la plus simple est nbind. Si vous voulez écrire asynchrone add-on vous pouvez combiner
Asyncworker
classe de nan.OriginalL'auteur Jasurbek Nabijonov
Voici un article intéressant sur L'obtention de votre C++ pour le Web avec Node.js
OriginalL'auteur sreepurna
Attention avec swig et C++:
http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn8
Il est rarement d'avoir une classe C++ limité à un seul .h fichier.
Aussi, les versions de swig supporte le JavaScript est swig-3.0.1 ou plus tard.
foo::bar
de toute façon. La définition d'un membre du groupe est tout au sujet de la mise en œuvre; les wrappers de SWIG génèrent sont tous à propos de l'interface.OriginalL'auteur Anton