パフォーマンスを最適化するには、閉鎖ツールと併せてemscriptenを使用したいが、emscriptenからJavaScriptで定義した関数をうまく呼び出せない。閉鎖ツールと一緒にemscriptenを使用する方法
私は自分のプロジェクトから最小限の例を抽出しましたが、私が意味することを実証することに注意してください。
// test.cc
#include <iostream>
#include "emscripten.h"
int main() {
std::cout << "Hello, World!\n";
EM_ASM(goog.dom.appendChild(
document.body,
goog.dom.createDom('p', {'font-weight' : 700}, 'Hello, World!'));
);
}
「Hello、World!」正しくはなく、その後に印刷されています
exception thrown: ReferenceError: goog is not defined,ReferenceError: goog is not defined
私は最大の性能を持っているように、私も高度な最適化してコンパイルし、閉鎖ライブラリが含まれているためgoog
が定義されていたはずにもかかわらず。
私はJavaScriptで同じことをすれば今では完全に正常に動作します:
goog.provide('main');
goog.require('goog.dom');
console.log('Hello, World!');
goog.dom.appendChild(document.body,
goog.dom.createDom('p', {'font-weight': 700}, 'Hello, World!'));
私は一緒に、私はちょうどそれを確認するためにasmjsファイルの前にこのJavaScriptファイルを含める両方使用していますちなみにgoog
が実際に定義されています。
注目すべきもう1つの興味深い点は、単純な最適化でコンパイルすると実際に機能することです。
したがって、私はclosureライブラリとclosureコンパイラと一緒にemscriptenを使用できますか?