问题标签 [emscripten]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
90 浏览

c++ - -whole-library 不可用时的解决方法

我正在尝试在-Wl,-whole-library不支持该标志的环境(emscripten)上进行编译。如何欺骗强制编译器包含导出的符号?解决方案应尽可能多地满足这些属性:

  • 可以应用于单个库(我不想包含其他库中未使用的符号)
  • 可以自动生成(例如通过使用 nm 获取导出的符号表?)
  • 可以使用函数和成员函数

我考虑过使用以下内容计算文件:

但它不适用于不能转换为 int 的成员函数(并且可以是私有的)。

你有什么主意吗 ?

0 投票
1 回答
2445 浏览

javascript - 使用 emscripten embind 在 C++ 中调用 javascript 函数

这个问题分为两部分。我想要做的是将我的大部分程序逻辑放在 c++ 类中,并将一些与视图相关的函数放在 js 中(如 DOM 操作和样式。)我使用 emscripten 嵌入类,它工作正常,而我不知道如何交互使用 hte js 代码(他们的教程中的资源非常有限。)

我正在考虑根据他们的教程(https://github.com/kripken/emscripten/wiki/Tutorial)将 val 对象传递给 c++ 类,传递工作得很好,而“调用”函数不起作用。我得到一个编译时错误

这是我尝试过的示例,他们将其放在教程中

我收到以下错误:错误:没有匹配的成员函数调用'call' Math.call("abs",-10); ~~~~^~~~ emscripten/1.5.6/system/include/emscripten/val.h:247:21: 注意:候选模板被忽略:无法推断模板参数'ReturnValue' ReturnValue call(const char* name , args&&... args) const {

基本上它说编译器不知道“调用”函数的返回类型。我做错了什么还是有更好的方式与 js 代码交互?

谢谢,易

0 投票
1 回答
4896 浏览

javascript - emscripten:我该如何解决 UnboundTypeError

我正在尝试使用 emscripten 构建一个使用 std::vector 和 std::map 的程序,并且编译成功。然而,当我在网络浏览器(firefox/chrome)上运行它时,UnboundTypeError 被捕获。

[03:21:26.453] UnboundTypeError:由于未绑定类型,无法调用 intArrayToVector:Pi

这是使用生成的 javascript 代码的 c++ 代码和 HTML 文件。

测试.cpp:

测试.html:

javascript代码由以下命令生成:

$ em++ --bind test.cpp -o test.js

我怎么解决这个问题?感谢您的任何帮助!

0 投票
3 回答
3268 浏览

javascript - 将 C++ 函数传递给 emscripten 中的 javascript 函数

我正在学习 emscripten 并试图更好地理解它。据我了解,它主要用于将现有 C/C++ 代码移植到 Web 客户端(浏览器)并从 JavaScript 调用 C/C++ 代码的用例。

但我想知道是否可以将 C++ 和 Emscripten 用于网页(注意:这更多是出于好奇 - 我知道目前没有太多好的理由这样做)。我设法从 C++ 调用 Javascript 函数并将字符串、int、double 等类型的参数传递给它们。但我缺少的是:从 C++ 调用 Javascript 函数并将 C 或 C++ 函数作为句柄传递。举个简单的例子:我将如何在纯 C++ 中编写以下 Javascript 代码?

0 投票
1 回答
580 浏览

shared-libraries - 我已经通过 Emscripten 构建了一个共享库,现在我想将它转移到 LLVM 的共享库中。

我已经通过 Emscripten 构建了一个共享库,现在我想将它转移到 LLVM 的共享库中。能成真吗?如何?-例如,我已经通过 Emscripten emconfigure ./configure、emmake make 编译了 xmllib2。它在 ../.libs 下构建了一个 libxml2.so,现在出于某种原因,我想将此 .so 文件传输到 LLVM .so 文件中。但我不知道如何实现它。

0 投票
1 回答
1514 浏览

javascript - 如何检查 Firefox 是否使用 asm.js 代码?

那么如何检查它是通过例如 Google 的 V8 引擎像普通 Javascript 一样执行,还是使用汇编以接近本机性能执行?

0 投票
0 回答
282 浏览

macos - 构建错误:Emscripten 在 Mac OsX 上的 Ammo.js

我在 Mac上构建ammo.js时遇到问题。(操作系统是小牛)。它不编译 C++ 代码,并且 /build 文件夹中的 bindings.cpp 代码中没有任何内容。

我按照此链接中的程序进行操作。这是我得到的第一个日志。

我知道 MacOSX 包含 clang 编译器,但 emscripten guid 被迫从 llvm 存储库安装 llvm 编译器。我想知道我该如何解决它。有人说 MacOsX 有运行 emscripten 的问题。但我想知道这是对还是错。

======更新=====

我在 make.py 文件中找到了名为 Apple 的 LLVM 的“cpp”,而不是我自己构建的 LLVM。在 make.py 文件中,

旧代码

更改代码

但是即使我更改了make.py,问题仍然存在。错误消息如下。

我想知道我该如何解决它。

0 投票
1 回答
1192 浏览

javascript - 在 ubuntu 上使用 emscripten 编译 ngspice 时出现链接错误

我正在尝试在 Ubuntu 下使用 emscripten 编译 ngspice。我在来自 Windows 8 主机的 hyper-v VM 上运行 Ubuntu 13.10 64 位。我从http://ngspice.sourceforge.net/download.html下载了最新的稳定版 ngpsice (ngspice-25)并测试了它是否按照 INSTALL 中的安装说明正确构建和运行(为简单起见省略配置参数):

这一切都与 gcc 4.8.1 完美配合,我可以从命令行运行已编译的 ngspice。接下来,我使用 apt-get 安装了 emscripten,它报告了这个版本:

这是我的 clang 版本:Debian clang 版本 3.2-7ubuntu1 (tags/RELEASE_32/final) (基于 LLVM 3.2) 目标:x86_64-pc-linux-gnu 线程模型:posix

还有我的 LLVM 版本(由 llvm-link 报告): LLVM ( http://llvm.org/ ): LLVM 版本 3.2 优化构建。建于 2013 年 6 月 7 日 (18:44:38)。默认目标:x86_64-pc-linux-gnu 主机 CPU:corei7

使用 emscripten 编译 hello-world.cpp 并在 nodeJS 中运行正常。

然后我用 emscripten 编译器代替配置步骤,如下所示:

这是配置步骤的输出:

配置完成后,make 产生:

最终错误在 CCLD 步骤中,这里是上述跟踪的尾部:

任何帮助弄清楚如何进行都会很棒,谢谢!

0 投票
0 回答
298 浏览

javascript - 如何通过 EMSCRIPTEN 将标准 ML 函数导出到 JavaScript?

是否可以导出标准 ML 函数,例如

通过 Emscripten 到相应的 JavaScript 函数?

我知道编译可以完成,但我不确定您将如何从 JS 代码中访问“fac”。

0 投票
1 回答
696 浏览

javascript - 有没有办法利用 MLTon 将标准 ML 编译为 JavaScript?

我能想象的唯一方法是使用 Emscripten,但 MLTon 没有 LLVM 后端。有可能吗?