设置环境变量:
sudo dpkg -i wasi-sdk_7.0_amd64.debexport PATH=/opt/wasi-sdk/bin:$PATHexport CC=/opt/wasi-sdk/bin/clangexport CXX=/opt/wasi-sdk/bin/clang++
从GitHub高下载一份ZXing C++的源码(https://github.com/nu-book/zxing-cpp)。
接下来要对工程构造做一些修正。首先在example中的CMakeLists.txt文件里设置sysroot:

set (CMAKE_SYSROOT /opt/wasi-sdk/share/wasi-sysroot)
由于目前的wasi-libc不支持C++的非常处理,以是要加上-fno-exceptions:
set (CMAKE_CXX_FLAGS “${CMAKE_CXX_FLAGS} — target=wasm32-wasi -Wall -Wextra -fno-exceptions”)
要编译的文件包含了scan_image.cpp以及ZXing干系的源码文件。把他们整合在一起。然后去掉所有源码中的非常处理代码。
编译工程:
mkdir buildcd buildcmake ..cmake --build .
接下来就可以运行wasm文件了:
$ wasmer run zxing_barcode_reader.wasm — dir=$(pwd)/../ $(pwd)/../test.pngText: MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;Format: QR_CODEPosition: 190x367 205x162 422x165 405x342EC Level: M$ wasmtime zxing_barcode_reader.wasm — dir=$(pwd)/../ $(pwd)/../test.pngText: MEBKM:URL:http\://en.wikipedia.org/wiki/Main_Page;;Format: QR_CODEPosition: 190x367 205x162 422x165 405x342EC Level: M
通过wapm(https://wapm.io/)发布之后也可以用wapm来运行:
源码
https://github.com/yushulx/wasi-zxing-wasm