c++ 转wasm移植注意事项

390 阅读1分钟

环境 git bash

  1. 安装emscripten, 安装相关py,node.js 依赖;配置环境变量; 2.配置库的位置:
export CPLUS_INCLUDE_PATH="/C/Program Files (x86)/Windows Kits/10/Include/10.0.17763.0:/h/Download/emsdk/upstream/emscripten/system:/F/sdkCode/pkg/nodejieba/deps/:/F/sdkCode/pkg/nodejieba/lib/:/F/sdkCode/pkg/nodejieba/node_modules/node-addon-api/:/c/Users/Administrator/AppData/Local/node-gyp/Cache/14.17.5/include/node"
export LD_LIBRARY_PATH="$CPLUS_INCLUDE_PATH"
  1. 编译命令
emcc.py -s FORCE_FILESYSTEM=1 --bind ./lib/jieba.wasm.cpp -o ./disk/mm.js

4.c++导出函数
#include <emscripten.h>
EMSCRIPTEN_KEEPALIVE

  1. c++ 字符串变量:
function initString(mystring) {
    if (typeof mystring != "string") {
        throw new TypeError("string")
    }
    var strptr = Module._malloc(mystring.length);
    Module.writeAsciiToMemory(mystring, strptr);
    return strptr;
}
  1. 文件系统:
FS.mkdir("/dict")
// FS.mount(MEMFS, {
//     root: "/",
//     fs: FS
// }, "/dw");

Module.FS_createDataFile("/aa", null, "123", true, true, true);
Module["FS_createPath"]("/", "ztt", true, true);
  1. 输出
Module['stdout'] = function (...args) {
    var str = String.fromCharCode(args)
    document.body.innerText += str
}

生命不止 折腾不息