我通过Emscripten wiki(Interacting with code)发现从javascript调用的C函数ccall
或cwrap
应该有char*
作为参数或返回类型或者返回一个字符串。
我在C方面不是很有经验(我的项目的其余部分是用C ++编写的)但是我知道你通常必须在C中手动释放动态字符串。这是将字符串从javascript传递给C函数的情况,如果是这样,应该怎么做?
答案 0 :(得分:1)
在大多数情况下,您可以获取C ++代码来处理内存分配并为您释放空间。例如,如果传入一个文字字符串(在引号中),它将在函数返回后被释放。
对于变量字符串,我建议您使用std :: string(正如您通常所做的那样),当您将其传递给emscripten函数时,只需调用它上面的c_str()方法进行转换。
例如:
my_js_function(my_string.c_str());