Bagaimana saya bisa menggunakan pustaka C ++ dari node.js?
javascript
c++
node.js
binding
Viktor Maia
sumber
sumber
extension
. EkstensiJawaban:
Lihatlah node-ffi .
sumber
Ada jawaban baru untuk pertanyaan itu sekarang. SWIG , pada versi 3.0 tampaknya menyediakan generator antarmuka javascript untuk Node.js, Webkit, dan v8.
Saya telah menggunakan SWIG secara ekstensif untuk Java dan Python untuk sementara waktu, dan begitu Anda memahami cara kerja SWIG, hampir tidak ada upaya (dibandingkan dengan ffi atau yang setara dalam bahasa target) yang diperlukan untuk menghubungkan kode C ++ ke bahasa yang SWIG mendukung.
Sebagai contoh kecil, misalkan Anda memiliki perpustakaan dengan header myclass.h:
Untuk menggunakan kelas ini dalam simpul, Anda cukup menulis file antarmuka SWIG berikut (mylib.i):
Buat file mengikat binding.gyp:
Jalankan perintah berikut:
Sekarang, menjalankan simpul dari folder yang sama, dapat Anda lakukan:
Meskipun kami perlu menulis 2 file antarmuka untuk contoh sekecil itu, perhatikan bagaimana kami tidak perlu menyebutkan
MyClass
konstruktor atausayHello
metode di mana pun, SWIG menemukan hal-hal ini, dan secara otomatis menghasilkan antarmuka alami.sumber
std::vector<>
misalnya, hanya%include "std_vector.i"
), dan Anda akan dapat memanipulasinya di sisi javascript dengan cara yang agak canggung. Perhatikan bahwa pendekatan ini masih jauh lebih mudah dan lebih aman daripada menulis sendiri FFI.Anda dapat menggunakan ekstensi node.js untuk memberikan binding untuk kode C ++ Anda. Berikut adalah satu tutorial yang mencakup hal itu:
http://syskall.com/how-to-write-your-own-native-nodejs-extension
sumber
Anda bisa menggunakan emscripten untuk mengkompilasi kode C ++ menjadi js.
sumber
Ada cara yang lebih baru untuk menghubungkan Node.js dan C ++. Tolong, rampas Nan .
EDIT Cara tercepat dan termudah adalah nbind . Jika Anda ingin menulis add-on asinkron Anda dapat menggabungkan
Asyncworker
kelas dari nan.sumber
Berikut ini adalah artikel menarik tentang Mendapatkan C ++ ke Web dengan Node.js
sumber
Berhati-hatilah dengan swig dan C ++: http://www.swig.org/Doc1.3/SWIG.html#SWIG_nn8
Jarang memiliki kelas C ++ terbatas hanya pada satu file .h.
Juga, versi swig yang mendukung JavaScript adalah swig-3.0.1 atau yang lebih baru.
sumber
foo::bar
itu. Definisi anggota kelas adalah tentang implementasi; pembungkus yang dihasilkan SWIG adalah semua tentang antarmuka.