标签: emscripten

Emscripten:如何将类中的枚举绑定为 JS 构造函数的属性?

我用公共枚举绑定一个类

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)

emscripten

1
推荐指数
1
解决办法
1838
查看次数

wasm-bindgen、asm.js 和 Emcripten 之间有什么区别?

我正在努力让 webpack 处理一组使用 wasm-bindgen 编译的WebAssembly 文件

即使这可能只是 webpack 的一个问题,它也让我意识到我没有完全掌握这些古怪的 WebAssembly 工具之间的差异。

emscripten asm.js webpack webassembly wasm-bindgen

1
推荐指数
1
解决办法
1108
查看次数

如何使用 emscripten 将 C GNU Scientific Library (GSL) 编译为 Web 程序集?

目标是将最新的稳定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 linker gsl emscripten webassembly

1
推荐指数
1
解决办法
640
查看次数

是否可以将exe编译为javascript?

有一些 C 反编译器,使用 emscripten 和 LLVM 可以在网络上构建 C/C++ 代码。

那么是否有可能以某种方式反编译exe,并将其编译为HTML和JS?

c compiler-construction decompiler emscripten

0
推荐指数
1
解决办法
4176
查看次数

WASM 和 Node.js 无法在模块外部使用“import.meta”

我使用提供的 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)

javascript node.js emscripten webassembly

0
推荐指数
1
解决办法
4481
查看次数