在WebAssembly模块中使用字符串



我正在尝试使这个简单的方案起作用,但是我不明白如何从内存中获取数据:

在Hello.cpp中:

void EMSCRIPTEN_KEEPALIVE modifyDOM(const char *text, const char *id) {
    printf("modify dom %s with %sn", id, text);
    EM_ASM_({
        console.log($0);
        console.log($1);
        console.log(arguments);
        const elt = document.getElementById($0);
        elt.innerHTML = $1;
    }, id, text);
}

在Hello.html中:

document.querySelector('.addDom').addEventListener('click', function(){
    Module.ccall('modifyDOM', null, ['string', 'string'], ['Some fun text', 'textDom']);
});

我得到的是printf输出正确的值(即用一些有趣的文本修改dom textdom(,但是console.log输出数字等数字等数字等数字,例如6736和6672。

我想那是因为在JavaScript世界内这些值像记忆中的指针一样存储。如果是这样,将这些值作为字符串的最佳方法是什么?

是的,那是指数。Emscripten生成的JavaScript胶电文件为您提供了一个辅助函数,将指针转换为null端端的ASCII-编码字符串到JavaScript字符串对象:Module.AsciiToString(ptr)

还有UTF8ToStringUTF16ToStringUTF32ToString

相关内容

  • 没有找到相关文章

最新更新