是否可以使用 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