Como posso usar uma biblioteca C ++ no node.js?
javascript
c++
node.js
binding
MaiaVictor
fonte
fonte
extension
. Google c ++ NodeJS extensãoRespostas:
Veja o node-ffi .
fonte
Há uma nova resposta para essa pergunta agora. SWIG , a partir da versão 3.0, parece fornecer geradores de interface javascript para Node.js, Webkit e v8.
Eu uso o SWIG extensivamente para Java e Python há algum tempo e, depois de entender como o SWIG funciona, quase não há esforço (comparado ao ffi ou o equivalente na linguagem de destino) necessário para fazer a interface do código C ++ com as linguagens que o SWIG apoia.
Como um pequeno exemplo, digamos que você tenha uma biblioteca com o cabeçalho myclass.h:
Para usar esta classe no nó, basta escrever o seguinte arquivo de interface SWIG (mylib.i):
Crie o arquivo de ligação binding.gyp:
Execute os seguintes comandos:
Agora, executando o nó da mesma pasta, você pode:
Embora precisássemos escrever 2 arquivos de interface para um exemplo tão pequeno, observe como não precisamos mencionar o
MyClass
construtor nem osayHello
método em nenhum lugar, o SWIG descobre essas coisas e gera automaticamente interfaces naturais.fonte
std::vector<>
por exemplo, apenas%include "std_vector.i"
), e você poderá manipulá-la no lado do javascript de uma maneira um tanto estranha. Observe que essa abordagem ainda é muito mais fácil e segura do que você mesmo escrever a FFI.Você pode usar uma extensão node.js para fornecer ligações para o seu código C ++. Aqui está um tutorial que aborda isso:
http://syskall.com/how-to-write-your-own-native-nodejs-extension
fonte
Você pode usar o emscripten para compilar o código C ++ em js.
fonte
Existem novas maneiras de conectar o Node.js e o C ++. Por favor, saqueie na Nan .
EDIT A maneira mais rápida e fácil é nbind . Se você deseja escrever um complemento assíncrono, pode combinar a
Asyncworker
classe de nan.fonte
Aqui está um artigo interessante sobre como obter seu C ++ na Web com o Node.js
fonte
Cuidado com swig e C ++: http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn8
É raro ter uma classe C ++ limitada a apenas um arquivo .h.
Além disso, as versões do swig que suportam JavaScript são swig-3.0.1 ou posterior.
fonte
foo::bar
qualquer maneira. A definição de um membro da classe tem tudo a ver com implementação; os wrappers que o SWIG gera são todos sobre a interface.