Для оптимальной производительности я хотел бы использовать emscripten в сочетании с инструментами закрытия, но плохо я не могу назвать функцию, определенную в JavaScript из emscripten.Как использовать 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!'));
);
}
«Привет, мир!». печатаются правильно, но затем:
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!'));
Кстати, я использую как в сочетании, и я включил этот файл JavaScript, прежде чем asmjs файл, просто чтобы убедиться, что goog
действительно определен.
Еще одна интересная вещь, которую следует отметить, это то, что она действительно работает, когда я компилирую с помощью простых оптимизаций.
Так как я могу использовать emscripten в сочетании с библиотекой закрытия и компилятором закрытия?