我正在开发一个使用来自C++/Wasm的HTML5 Canvas的指针化版本的项目。我目前有一个导入,'void drawImageFromURL(const char *, int, int, int, int, float('和一个导出,'void frame(void('。我的问题是,在生成的Wasm中,"drawImageFromURL"被导入为"_Z16drawImageFromURLPKciiiif",而"frame"被导出为"_Z5framev"。
我正在使用一个名为"wasmc"的shell脚本进行构建,该脚本使用clang(我对Emscripten只有不好的体验(,其中包含以下代码: '''sh。 #!/bin/bash clang --target=wasm32 -wl,--export-dynamic -wl,--no-entry -wl,--allow-undefined -wl,--import-memory $* --sysroot/home/linuxbrew/.linuxbrew -I/usr/include -L/usr/lib -nostdlib ``` 我是这样使用它的: ``` $ wasmc -o main.wasm main.cpp -oz ```
我在'Intel® Core™ i5-9400F CPU @ 2.90GHz × 6'CPU上使用Debian GNU/Linux 9(拉伸(64位(复制自GNOME设置(,具有7.7 GiB的RAM和Radeon RX 580系列(POLARIS10,DRM 3.27.0,4.19.0-5-amd64,LLVM 7.0.0(显卡,磁盘空间为235.8 GB。
我正在使用通过Linuxbrew(Linux的[Homebrew](https://brew.sh((安装的clang版本9.0.0。
我正在开发一个使用来自C++/Wasm的HTML5 Canvas的指针化版本的项目。我目前有一个导入,'void drawImageFromURL(const char *, int, int, int, int, float('和一个导出,'void frame(void('。我的问题是,在生成的Wasm中,"drawImageFromURL"被导入为"_Z16drawImageFromURLPKciiiif",而"frame"被导出为"_Z5framev"。
我正在使用一个名为"wasmc"的shell脚本进行构建,该脚本使用clang(我对Emscripten只有不好的体验(,其中包含以下代码: '''sh。 #!/bin/bash clang --target=wasm32 -wl,--export-dynamic -wl,--no-entry -wl,--allow-undefined -wl,--import-memory $* --sysroot/home/linuxbrew/.linuxbrew -I/usr/include -L/usr/lib -nostdlib ``` 我是这样使用它的: ``` $ wasmc -o main.wasm main.cpp -oz ```
我在'Intel® Core™ i5-9400F CPU @ 2.90GHz × 6'CPU上使用Debian GNU/Linux 9(拉伸(64位(复制自GNOME设置(,具有7.7 GiB的RAM和Radeon RX 580系列(POLARIS10,DRM 3.27.0,4.19.0-5-amd64,LLVM 7.0.0(显卡,磁盘空间为235.8 GB。
我正在使用通过Linuxbrew(Linux的[Homebrew](https://brew.sh((安装的clang版本9.0.0。
我真的很感激在这方面的一些帮助。
谢谢!
以下是我项目中所有文件的源代码:main.cpp
:
extern void drawImageFromURL(const char *url, int x, int y, int h, int w, float θ);
__attribute__((visibility("default")))
void frame() {
static float θ = 0;
drawImageFromURL("/gear.png", 50, 50, 100, 100, θ);
θ += 0.01;
}
main.wasm
(由 VS Code WebAssembly 扩展生成的 S 表达式(:
(module
(type $t0 (func (param i32 i32 i32 i32 i32 f32)))
(type $t1 (func))
(import "env" "memory" (memory $env.memory 2))
(import "env" "_Z16drawImageFromURLPKciiiif" (func $drawImageFromURL_char_const*__int__int__int__int__float_ (type $t0)))
(func $frame__ (type $t1)
i32.const 1028
i32.const 50
i32.const 50
i32.const 100
i32.const 100
i32.const 0
f32.load offset=1024
call $drawImageFromURL_char_const*__int__int__int__int__float_
i32.const 0
i32.const 0
f32.load offset=1024
f64.promote/f32
f64.const 0x1.47ae147ae147bp-7 (;=0.01;)
f64.add
f32.demote/f64
f32.store offset=1024)
(table $T0 1 1 anyfunc)
(global $g0 (mut i32) (i32.const 66576))
(export "_Z5framev" (func $frame__))
(data (i32.const 1024) "