首页 > 解决方案 > 使用 emscripten 将 c++ 代码编译为 javascript 以求两个数之和。练习

问题描述

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

标签: javascripthtmlc++emscripten

解决方案


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

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

Emscripten 文档中:

如果您的函数在其他函数中使用,LLVM 可能会内联它,并且它不会在 JavaScript 中作为唯一函数出现。通过使用 EMSCRIPTEN_KEEPALIVE 定义函数来防止内联

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

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

EXPORTED_FUNCTIONS='["int_sum_of_two_numbers"]'

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

我不久前写了一篇关于将 WebAssembly 与 Angular 集成的文章,它与您想要实现的目标非常相似。我认为这值得一读。


推荐阅读