我通过 Emscripten wiki ( Interacting with code ) 发现,使用 ccall
或 cwrap
从 javascript 调用的 C 函数应该具有 char*
传递或返回字符串时作为参数或返回类型。
我对 C 的经验不是很丰富(我的项目的其余部分是用 C++ 编写的),但我知道你通常必须手动释放 C 中的动态字符串。将字符串从 javascript 传递到 C 函数时是否会出现这种情况,如果是这样,应该如何做?
最佳答案
在大多数情况下,您可以让 C++ 代码来为您处理内存分配和释放。例如,如果您传入一个文字字符串(用引号引起来),它将在函数返回后被释放。
对于变量字符串,我建议您使用 std::string (就像您通常所做的那样),并且当您将其传递给 emscripten 函数时,只需调用其上的 c_str() 方法即可将其转换。
例如:
my_js_function(my_string.c_str());
关于emscripten - 您是否必须释放传递给 Emscripten 中导出的 C 函数的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24435345/