问题标签 [emcc]

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 回答
482 浏览

c - emcc 无法在 Mac OSX 10.15、clang-10 上运行:错误未知参数:'-fignore-exceptions'

我有一个hello.c包含以下内容的简单文件:

我正在尝试使用以下命令将其编译为.htmlwith emscriptenemcc命令:

emcc hello.c --emrun -o hello.html

但我得到的输出是:

emcc: warning: LLVM version appears incorrect (seeing "10.0", expected "11.0") [-Wversion-check] clang-10: error: unknown argument: '-fignore-exceptions' emcc: error: '/usr/local/opt/llvm/bin/clang -target wasm32-unknown-emscripten -D__EMSCRIPTEN_major__=1 -D__EMSCRIPTEN_minor__=39 -D__EMSCRIPTEN_tiny__=18 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror=implicit-function-declaration -Xclang -nostdsysteminc -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/system/include/compat -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/system/include -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/system/include/libc -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/system/lib/libc/musl/arch/emscripten -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/system/local/include -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/system/include/SSE -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/cache/wasm/include -DEMSCRIPTEN -fignore-exceptions hello.c -Xclang -isystem/usr/local/Cellar/emscripten/1.39.18/libexec/system/include/SDL -c -o /var/folders/74/19dk0c293ps0fmfj5vsqld1w0000gn/T/emscripten_temp_xakv8jzi/hello_0.o -mllvm -combiner-global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr' failed (1)

我通过自制软件安装了 emscripten 和依赖项。这些是我的必要出口.zshrc

export LLVM="/usr/local/opt/llvm/bin" export BINARYEN="/usr/local/opt/binaryen/bin"

我怎样才能让它工作?

0 投票
1 回答
76 浏览

canvas - 如何控制画布在文档中的放置位置?

我有一个带有 UI 的 C++ 应用程序,我使用 emcc 将其转换为 JS。

此应用程序的 UI 采用网页上的画布形式并附加到正文中。如何控制画布的附加位置?

如果我想附加画布#my-container而不是正文怎么办?

干杯!

0 投票
1 回答
413 浏览

c - EM_JS 无法导出 emscripten 中的函数

如果我使用 emscripten 接口,EM_JS符号似乎不会被导出或任何东西。

如果我使用以下 C 代码:

如果我尝试使用以下行进行编译,就像这样,这是我的问题。

我可以尝试在没有它的情况下进行编译,如下所示:

当我加载它时,我得到

如何让 emcc 实际使用我生成的函数EM_JS

仅供参考,这是我正在使用的 emcc 版本:

0 投票
1 回答
1124 浏览

cmake - wasm-ld:错误:初始内存太小,需要 18317952 字节

我想将ffmpeg编译为wasm。下载FFMPEG和emsdk源代码后,我使用下面的命令进行构建。

然后我得到了这样的错误:

如何更改默认的emcc 初始内存设置?

0 投票
2 回答
416 浏览

emscripten - 使用 emcc 编译 ffmpeg 时出错:“cbrt”的静态声明遵循非静态声明

我尝试使用 emscripten 通过以下脚本编译 ffmpeg,但在编译时出现错误:(使用 Mac pro - Docker ubuntu FFmpeg:4.3.1 和 emcc:2.0.1)

这是我的命令:

试了emcc不合理的版本(2.0.1、2.0.0、1.40.1、1.39.20),还是遇到了同样的错误。</p>

官网的docker镜像也不好。

0 投票
1 回答
686 浏览

c++ - std::filesystem current_path 返回根目录

我只想通过std::filesystem::path::current_path(编译器是emcc 这个)打印当前路径及其内容。下面的一些代码:

对于 Windows,它工作正常,输出如下所示:

但是,无论是 Linux 子系统还是带有 Ubuntu 映像的 docker 容器,它都只打印根目录:

可能是我错过了一些适合 Linux 的东西std::filesystem吗?

0 投票
0 回答
163 浏览

git-bash - 找不到 emcc - emscripten

我正在尝试执行 .bat 并得到:

我找到了“emcc”文件,它位于:C:\emsdk\emscripten\1.38.23 所以我检查了系统环境变量并编辑了“path”变量,将位置“C:\emsdk\emscripten\”作为值添加1.38.23" 还是找不到 emcc。有谁能帮助我吗?

0 投票
1 回答
81 浏览

webassembly - 为什么 WASM 文件不同?

我想使用 WebAssembly,所以我必须将 C 文件编译为 WASM 文件。

C文件内容如下

这是一个非常简单的 C 文件。

此 WASM 文件由在线编译工具WebAssembly Studio编译。我使用一个工具“wasm2wat”将其反汇编为Text文件,内容如下

而且我还使用“emcc add.c -s WASM=1 -O3 -o add.js”来编译本地的“add.c”

上述命令得到的 WASM 文件为

为什么这两个结果不一样?为什么上面的文件可以用在HTML中,而下面的却不行?</p>

0 投票
1 回答
65 浏览

c - webassembly (C) 如何创建配置文件?

我想为我的 webassembly 应用程序创建配置。它只需要能够存储一些键值对:无论是 JSON、XML、.cfg、.csv 还是 .txt 都可以。可以用 webassembly 做到这一点吗?我需要提供配置文件还是需要如何将配置文件交付给客户端?我将使用什么路径打开文件?

更多信息:我将直接 C 与 emcc 一起使用。我的构建命令是:

我没有向 javascript 公开任何内容。一切都是用 SDL 操作画布。我还没有写任何javascript。

我目前正在使用 Python 的简单 http 服务器服务python3 -m http.server 8080

我已经尝试过使用 libconfig,但我一直在编译它并让它找到配置文件。

0 投票
0 回答
538 浏览

c++ - 链接错误与 C++/Wasm 中 Emscripten 的仅标头库的 Boost 端口

我正在尝试编译一个 cpp 文件,以使用现有的Emscripten 端口在 Wasm 项目中使用 Boost 库进行一些测试:

https://github.com/emscripten-ports/boost

当我使用一些 Boost 模块时,它可以正常工作,例如本例中的lambda

https://www.boost.org/doc/libs/1_75_0/more/getting_started/windows.html#build-a-simple-program-using-boost

但是,当我在本例中使用其他模块(如locale)时,会出现编译错误:

https://www.boost.org/doc/libs/1_48_0/libs/locale/doc/html/hello_8cpp-example.html

(两个例子都取自官方文档)

我使用-s USE_BOOST_HEADERS=1编译文件,这是我在 Emscripten 端口文档中阅读的最直接的方法:

https://emscripten.org/docs/compiling/Building-Projects.html#emscripten-ports

https://emscripten.org/docs/getting_started/FAQ.html#how-do-i-link-against-system-libraries-like-sdl-boost-etc

似乎我缺少一些包含或链接,但我不知道如何将它们添加到 emcc 命令以便编译工作。我已经在我的计算机中安装了 Boost 库。

提前致谢!

丹尼·P。

编辑:如果是端口问题,我刚刚在 GitHub 中打开了一个问题:

https://github.com/emscripten-ports/boost/issues/3

编辑 2:问题与不是仅标头的 Boost 库有关,这就是 lambda 示例有效但语言环境无效的原因:

https://www.boost.org/doc/libs/1_55_0/more/getting_started/windows.html#header-only-libraries

在包含之前必须编译没有仅包含头文件的库,但我不知道该怎么做,所以它可以与 emcc 命令一起使用。请问有什么帮助吗?

编辑 2:我检查locale.hpp了 Boost 文件夹中有一个文件,以便它可以与 headers 一起使用-s USE_BOOST_HEADERS=1

我尝试将此文件和语言环境文件夹添加到编译中,-I但它也不起作用,所以我认为这可能是一个端口问题。