Für eine optimale Leistung möchte ich emscripten in Verbindung mit den Closure Tools verwenden, aber schlecht kann ich die Funktion, die ich in JavaScript definiert habe, nicht von emscripten aufrufen.Wie benutze ich emscripten in Verbindung mit den Closure Tools
Beachten Sie, dass ich ein minimales Beispiel aus meinem Projekt extrahiert habe, demonstriere, was ich meine.
// 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!'));
);
}
Also "Hallo, Welt!" da ich die maximale Leistung haben
exception thrown: ReferenceError: goog is not defined,ReferenceError: goog is not defined
obwohl goog
sollte so die Schließung Bibliothek auch mit erweiterten Optimierungen enthalten definiert habe kompiliert und ich: richtig, aber dann wird gedruckt.
Nun, wenn ich die gleiche Sache in JavaScript zu tun funktioniert es völlig in Ordnung:
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!'));
Durch die Art, wie ich beide in Verbindung mit bin und ich schließe diese Datei JavaScript bevor die asmjs nur um sicherzugehen, dass Datei goog
ist wirklich definiert.
Eine andere interessante Sache zu beachten ist, dass es tatsächlich funktioniert, wenn ich mit einfachen Optimierungen kompiliere.
Also, wie kann ich emscripten in Verbindung mit der Schließung Bibliothek und Schließung Compiler?