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

Posted

技术标签:

【中文标题】是否可以使用 Emscripten 从 JavaScript 调用 C++ 函数?【英文标题】:Is it possible to call C++ functions from JavaScript using Emscripten? 【发布时间】:2013-02-15 18:05:56 【问题描述】:

我正在尝试从 C++ 库生成 javascript 包装器(以便可以在 Web 浏览器的客户端使用 C++ 代码),但我不确定哪种工具最适合此目的。使用 Emscripten,是否可以从 C++ 库生成 JavaScript 库,以便在 JavaScript 中调用 C++ 函数?

【问题讨论】:

作为概念验证,是否可以从 math.h(用于数学函数的标准 C++ 库)生成 JavaScript 库? math.h 是一个标头,它只包含声明,没有实现。您需要libm 或 Windows 等效项,即包含这些函数实现的库。然而,这个领域(低级数学)充满了特定于架构的代码,例如内联汇编器或编译器内置函数以使用特定于 CPU 架构的技巧。这可能不是概念验证的最佳选择。 @delnan 那么,用于概念验证的更好的库是什么? 我没有具体的建议。为了启动和运行,我可能会使用简单的手写 sn-ps。为了稍后针对真实世界的代码进行测试,我可能会研究一些不是仅标头的 boost 库(或编译它们的示例之一)。或者,C 库不会遭受名称修改(当被 extern "C" 正确包围时),这使得交互不那么痛苦。 【参考方案1】:

是的,可以从 JavaScript 调用编译后的 C++ 函数,根据Emscripten's official documentation.

【讨论】:

以上是关于是否可以使用 Emscripten 从 JavaScript 调用 C++ 函数?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 javascript 应用程序中使用 c++ 库

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

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

Emscripten教程之入门指导

从 Asm.js/emscripten 启用 WebGL 扩展?

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