Cha*_*ohr 7 javascript c emscripten webassembly
我正在尝试使用 emscripten 将 .c 文件和 .wat 文件链接在一起,以便我可以从 c 调用本机 WebAssembly 函数。我尝试了几种方法,但似乎都不起作用。例如,如果我尝试这样的事情:
wat文件.wat
(module
(func $addwat (param $p1 i32) (param $p2 i32) (result i32)
local.get $p1
local.get $p2
i32.add
)
(export "addwat" (func $addwat))
)
Run Code Online (Sandbox Code Playgroud)
c文件
#include <emscripten.h>
int addwat( int a, int b );
int add2( int a, int b )
{
return a+b;
}
int add2cwat( int a, int b )
{
return addwat( a, b );
}
Run Code Online (Sandbox Code Playgroud)
wat2wasm -r watfile.wat
emcc -o cfile.wasm cfile.c watfile.wasm -s EXPORTED_FUNCTIONS='["_add2","_add2cwat"]' -s EXPORTED_RUNTIME_METHODS='["ccall","cwrap"]' -s ERROR_ON_UNDEFINED_SYMBOLS=0 -s ASYNCIFY=1 -s EXPORT_ALL=1 -s SIDE_MODULE=1
emcc -o c-test.wasm cfile.wasm watfile.wasm -s EXPORTED_FUNCTIONS='["_add2wat","_add2","_add2cwat"]' -s ASYNCIFY=1 -s EXPORT_ALL=1 --no-entry -s STANDALONE_WASM=1
emcc: error: undefined exported function: "_add2" [-Wundefined] [-Werror]
Run Code Online (Sandbox Code Playgroud)
我可以强制所有内容链接,但检查链接的输出时,符号会丢失。链接到多个 wasm 文件的正确方法是什么?或者更好的是 - 如何从 emscripten'd C 文件链接到 wasm 文件?
编辑:请注意,您似乎无法使用 wasm-ld 将 emscripten 输出的 WASM 链接在一起,而不牺牲 emscripten 为您购买的所有内容。即它需要可重定位的文件-s RELOCATABLE=1,但如果你只是编译一个侧面模块,你只能 -s SIDE_MODULE=1这样做,这意味着你输了_start
| 归档时间: |
|
| 查看次数: |
1122 次 |
| 最近记录: |