使用 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++ 函数?