gpt4 book ai didi

javascript - 使用 Emscripten 导出所有函数

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:12 26 4
gpt4 key购买 nike

我想通过 JavaScript 以简单的方式使用 C 源代码(仅使用免费/自由软件)。所以 Emscripten 似乎是一个不错的选择。 https://kripken.github.io/emscripten-site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html

有一个导出一个函数的例子:

emcc tests/hello_function.cpp -o function.html -s EXPORTED_FUNCTIONS="['_int_sqrt']"

但是有许多函数与在 JavaScript 中使用相关。此外,似乎我将不得不添加更多的内容来访问结构的成员。 Accessing struct fields from emscripten

所以,我想知道是否可以在不创建包含所有名称的大数组的情况下导出所有函数(libc 的函数除外),即使这可能是 JS 大小问题和效率问题。

问候。

最佳答案

导出所有函数的方法是同时使用 -s LINKABLE=1 https://github.com/kripken/emscripten/blob/1.34.12/src/settings.js#L461-s EXPORT_ALL=1 https://github.com/kripken/emscripten/blob/1.34.12/src/settings.js#L385编译时的选项。

emcc tests/hello_function.cpp -o function.html -s LINKABLE=1 -s EXPORT_ALL=1

只是让 -s EXPORT_ALL=1 确实有效,但在我的系统上会导致以下警告:

warning: unresolved symbol: remquof
warning: unresolved symbol: ilogb
warning: unresolved symbol: nextafter
warning: unresolved symbol: remquo
warning: unresolved symbol: fesetround
warning: unresolved symbol: llvm_fma_f64

但是,这并不能完全满足您的需求,因为 libc 函数也会被导出。例如,您可以调用

Module.ccall('printf', 'number', ['string'], ['Passing a string from Javascript to C\n');

很好,它会将字符串发送到标准输出(默认情况下只是浏览器控制台)。


此答案基于 @zakki's answer .

关于javascript - 使用 Emscripten 导出所有函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33190760/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com