是否可以使用 emscripten 使用 Javascript 从 C++ 打印字符串?

Posted

技术标签:

【中文标题】是否可以使用 emscripten 使用 Javascript 从 C++ 打印字符串?【英文标题】:Is it possible to print a string from C++ with Javascript using emscripten? 【发布时间】:2013-07-04 17:28:35 【问题描述】:

如何使用 emscripten 将 char*std::string 传递给外部定义的 javascript 函数?

目前,当我将char* 传递到外部定义的 Javascript 中时,会打印一个数字而不是字符串(指针?)。

这是我正在使用的代码:

mylib.js

mergeInto(LibraryManager.library,   
    my_js: function(s)   
        Module.print(s);
        console.log(s);
        document.getElementById('voronoi').innerhtml = s;
    ,
 );

main.cpp

int main(int argc, const char * argv[])

    char* myString = (char*) malloc(10);
    strncpy(myString, "SOMETHING", 10);
    my_js(myString);
    free(myString);
    return 0;

运行node ./a.out.js时将结果打印到控制台:

5260128

【问题讨论】:

【参考方案1】:

我对 emscripten 不是很熟悉,但是 this answer 到另一个问题似乎使用 Pointer_stringify("...") 从 C 字符串转换。

【讨论】:

【参考方案2】:

另一种方法是使用embind。

您可以参考我的answer here了解更多详情。

【讨论】:

以上是关于是否可以使用 emscripten 使用 Javascript 从 C++ 打印字符串?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以像现在一样轻松编译 Emscripten,但没有控制台和 emscripten 徽标?

使用 Clang 编译的可执行文件中的 emscripten

Emscripten malloc 和跨 JS 和 C++ 的免费

将 emscripten 与 opengl 着色器一起使用

在 emscripten 中禁用链接 libc

Emscripten教程之文件和文件系统