我用公共枚举绑定一个类
class Foo {
public:
Foo();
enum class Bar { ALPHA, BRAVO }
};
Foo::Foo() { }
EMSCRIPTEN_BINDINGS(Foo) {
.enum_<Foo::Bar>("FooBar")
.value("ALPHA", Foo::Bar::ALPHA)
.value("BRAVO", Foo::Bar::BRAVO);
}
Run Code Online (Sandbox Code Playgroud)
现在我可以通过以下方式访问 Javascript 中的枚举:
Module.FooBar.ALPHA
Run Code Online (Sandbox Code Playgroud)
但实际上我想通过以下方式访问它:
Module.Foo.Bar.ALPHA
Run Code Online (Sandbox Code Playgroud)
有没有机会通过 Emscripten Bindings 实现这一点,或者以下 hackish JS 代码是唯一的方法吗?
Module.Foo.Bar = Module.FooBar;
delete Module.FooBar;
Run Code Online (Sandbox Code Playgroud) 我正在努力让 webpack 处理一组使用 wasm-bindgen 编译的WebAssembly 文件。
即使这可能只是 webpack 的一个问题,它也让我意识到我没有完全掌握这些古怪的 WebAssembly 工具之间的差异。
目标是将最新的稳定GSL编译为Web 程序集并使其可作为Node.js使用模块使用。
受emscripten 手册这一部分的启发,我尝试了以下过程:
git clone git://git.savannah.gnu.org/gsl.git
cd gsl
git checkout tags/release-2-6
autoreconf -i
emconfigure ./configure
emmake make
Run Code Online (Sandbox Code Playgroud)
不幸的是,我得到了多个wasm-ld: error: duplicate symbol.
但是编译 GSL (make ) 工作得很好。
我在用emsdk version 2.0.16我在 Ubuntu 18.04 上
有谁知道如何解决这个问题?
非常感谢您的帮助。
有一些 C 反编译器,使用 emscripten 和 LLVM 可以在网络上构建 C/C++ 代码。
那么是否有可能以某种方式反编译exe,并将其编译为HTML和JS?
我使用提供的 make 文件将FastText C++ 模块构建为 wasm 模块,即使用以下标志:
EMCXX = em++
EMCXXFLAGS = --bind --std=c++11 -s WASM=1 -s ALLOW_MEMORY_GROWTH=1 -s "EXTRA_EXPORTED_RUNTIME_METHODS=['addOnPostRun', 'FS']" -s "DISABLE_EXCEPTION_CATCHING=0" -s "EXCEPTION_DEBUG=1" -s "FORCE_FILESYSTEM=1" -s "MODULARIZE=1" -s "EXPORT_ES6=1" -s 'EXPORT_NAME="FastTextModule"' -Isrc/
EMOBJS = args.bc autotune.bc matrix.bc dictionary.bc loss.bc productquantizer.bc densematrix.bc quantmatrix.bc vector.bc model.bc utils.bc meter.bc fasttext.bc main.bc
Run Code Online (Sandbox Code Playgroud)
已编译的 wasm 模块可在此处获取。当我在提供的示例Predict.js中运行模块时,我得到一个
var _scriptDir = import.meta.url;
^^^^
SyntaxError: Cannot use 'import.meta' outside a module
at wrapSafe (internal/modules/cjs/loader.js:1072:16)
at Module._compile (internal/modules/cjs/loader.js:1122:27)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:1178:10)
at Module.load …Run Code Online (Sandbox Code Playgroud) emscripten ×5
webassembly ×3
c ×2
asm.js ×1
decompiler ×1
gsl ×1
javascript ×1
linker ×1
node.js ×1
wasm-bindgen ×1
webpack ×1