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