使用 emscripten 将字符串从 C++ 传递给 JS

Posted

技术标签:

【中文标题】使用 emscripten 将字符串从 C++ 传递给 JS【英文标题】:Pass string from C++ to JS using emscripten 【发布时间】:2021-12-08 13:19:45 【问题描述】:

我正在尝试使用 emscripten 将字符串从 C++ 发送到 JS,但我无法在 JS 中适当地转换它。

C++

    EMSCRIPTEN_KEEPALIVE const char* accessDetails()
    
        return func().c_str();
    

func 返回 std::string。

我得到了一些垃圾值number。如何在 JS 中获取字符串? 提前致谢。

【问题讨论】:

【参考方案1】:

当调用像这样的原始 WebAssembly 函数时,仅支持基本类型。在这种情况下,您将返回一个只是数字的指针(指针在 JS 中是数字,就像在 C/C++ 中一样)。您可以使用该指针从 WebAssembly 内存中读取字节,并使用例如 UTF8ToString(number) 从中生成一个 JS 字符串,或者您可以使用更高级别的绑定系统之一,例如 embind 来为您处理它。

更多信息请参见https://emscripten.org/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html

【讨论】:

以上是关于使用 emscripten 将字符串从 C++ 传递给 JS的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Emscripten 将对象从 Javascript 传递到 C++

是否可以使用 Emscripten 从 JavaScript 调用 C++ 函数?

将命令行参数传递给 emscripten 生成的应用程序

使用 emscripten 将 c++ 文件转换为 wasm 时出错

使用 Emscripten 读写字符串到虚拟文件系统

使用 emscripten 将 c++ 代码编译为 javascript 以求两个数之和。练习