JSXからemscriptenで生成したJSを呼ぶ #upcamp
#upcamp でハッカソンしてます。JSXからemscriptenで生成したJSを呼び出してみました。emscriptenはhomebrewでbrew install llvm --with-clang
でllvmを入れ、emccのshebangを修正するだけで動きました。
コンパイル は EXPORTED_FUNCTIONS を指定すること以外は特になにもしていません。
Cのコードは以下のとおりです。
double add(double a, double b) { return a + b; }
JSXのコードは以下のようになります。
native class C { static function ccall.<T>(name : string, returnType : string, argsType : string[], args : variant[]) : T; } = "require('./add.js')"; class _Main { static function main(args : string[]) : void { var r = C.ccall.<number>("add", "number", ["number", "number"], [10, 20] : variant[]); log r; # 30 } } // vim: set tabstop=2 shiftwidth=2 expandtab:
ccall()はemscripten runtimeのAPIで、シグネチャを与えてCの関数を呼び出します。以外と簡単にできました。
全コードはgithubにあります。