javascript - 使用 emscripten 将 c++ 代码编译为 javascript 以计算两个数字的总和。练习

标签 javascript html c++ emscripten

我想做一个简短的例子来理解 emscripten 是如何工作的。 我想制作一个 html,我可以在两个不同的文本框中添加两个数字。我还添加了一个按钮和第三个文本框,在我输入上面的两个数字并按下按钮后,应该打印结果。

最佳答案

我发现您的项目存在一些问题。首先,我认为您应该像这样用 EMSCRIPTEN_KEEPALIVE 标记 C++ 函数:

int EMSCRIPTEN_KEEPALIVE int_sum_of_two_numbers(int number1, int number2)
{
    int sum;
    sum = number1 + number2;
    return sum; 
}

来自Emscripten documentation :

If your function is used in other functions, LLVM may inline it and it will not appear as a unique function in the JavaScript. Prevent inlining by defining the function with EMSCRIPTEN_KEEPALIVE

这允许 Javascript 代码找到您的 C++ 函数。

除此之外,当您提到导出函数 _int_sum_of_two_numbers => int_sum_of_two_numbers<时,您用来编译项目的命令似乎有一个额外的下划线 _ 字符。所以你应该使用:

EXPORTED_FUNCTIONS='["int_sum_of_two_numbers"]'

最后一点,您可以将 main() 函数留空。该函数中的代码与您的 Web 应用程序无关。

我前段时间写了一篇关于integrating WebAssembly with Angular的文章它与您要实现的目标非常相似。我认为这值得一读。

关于javascript - 使用 emscripten 将 c++ 代码编译为 javascript 以计算两个数字的总和。练习,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51947074/

相关文章:

c++ - SDL2碰撞检测

javascript - 通过 Ajax (Wordpress) 加载内容后让 javascript 工作

javascript - 在 Angular 中使用 ng-click 嵌套 div

html - 篡改 URL 后 CSS 未加载

jquery - IOS中的滚动问题

c++ - 在传出的 UDP 数据包上设置 TTL?

c++ - vector 的 vector 会是连续的吗?

javascript - jQuery推送到多维数组仅返回最后一个值

javascript - 更新 mongoose schema.save 中的 `let` 变量

javascript - 使用 jQuery/JS 与具有特定内容的任何标题相邻的样式有序列表