摘要:支持綁定大多數的結構,包括和中引入的。枚舉支持枚舉和枚舉類。雖然還有進一步優化的空間,但到目前為止,它在實際應用程序中的性能已經被證明是完全可以接受的。
翻譯:云荒杯傾
Embind用于綁定C++函數和類到JavaScript,這樣編譯代碼就能在js中以一種很自然的方式來使用。Embind也支持從C++調JavaScript的class。
Embind支持綁定大多數C++的結構,包括C++11和C++14中引入的。它只有一個明顯的限制就是目前還不支持raw pointers with complicated lifetime semantics。
本文展示了如何使用EMSCRIPTEN_BINDINGS()塊來創建函數、類、值類型、指針(包括原始和智能指針)、枚舉和常量的綁定,以及如何為抽象類創建綁定,這些抽象類可以在JavaScript中被重寫。它還簡要介紹了如何管理傳遞給JavaScript的c++對象句柄的內存。
note: Embind的靈感來自 Boost.Python,他們使用非常相似的方法定義綁定。一個簡單例子
下面的代碼使用EMSCRIPTEN_BINDINGS()暴露了C++ lerp()函數給JavaScript。
// quick_example.cpp #includeusing namespace emscripten; float lerp(float a, float b, float t) { return (1 - t) * a + t * b; } EMSCRIPTEN_BINDINGS(my_module) { function("lerp", &lerp); }
為了使用embind編譯上例,請調用emcc的bing選項:
emcc --bind -o quick_example.js quick_example.cpp
生成的quick_example.js文件可以作為node模塊加載,也可以使用