问题标签 [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.
c - emcc 无法在 Mac OSX 10.15、clang-10 上运行:错误未知参数:'-fignore-exceptions'
我有一个hello.c
包含以下内容的简单文件:
我正在尝试使用以下命令将其编译为.html
with 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"
我怎样才能让它工作?
canvas - 如何控制画布在文档中的放置位置?
我有一个带有 UI 的 C++ 应用程序,我使用 emcc 将其转换为 JS。
此应用程序的 UI 采用网页上的画布形式并附加到正文中。如何控制画布的附加位置?
如果我想附加画布#my-container
而不是正文怎么办?
干杯!
c - EM_JS 无法导出 emscripten 中的函数
如果我使用 emscripten 接口,EM_JS
符号似乎不会被导出或任何东西。
如果我使用以下 C 代码:
如果我尝试使用以下行进行编译,就像这样,这是我的问题。
我可以尝试在没有它的情况下进行编译,如下所示:
当我加载它时,我得到
如何让 emcc 实际使用我生成的函数EM_JS
?
仅供参考,这是我正在使用的 emcc 版本:
cmake - wasm-ld:错误:初始内存太小,需要 18317952 字节
我想将ffmpeg编译为wasm。下载FFMPEG和emsdk源代码后,我使用下面的命令进行构建。
然后我得到了这样的错误:
如何更改默认的emcc
初始内存设置?
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镜像也不好。
c++ - std::filesystem current_path 返回根目录
我只想通过std::filesystem::path::current_path
(编译器是emcc
这个)打印当前路径及其内容。下面的一些代码:
对于 Windows,它工作正常,输出如下所示:
但是,无论是 Linux 子系统还是带有 Ubuntu 映像的 docker 容器,它都只打印根目录:
可能是我错过了一些适合 Linux 的东西std::filesystem
吗?
git-bash - 找不到 emcc - emscripten
我正在尝试执行 .bat 并得到:
我找到了“emcc”文件,它位于:C:\emsdk\emscripten\1.38.23 所以我检查了系统环境变量并编辑了“path”变量,将位置“C:\emsdk\emscripten\”作为值添加1.38.23" 还是找不到 emcc。有谁能帮助我吗?
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>
c - webassembly (C) 如何创建配置文件?
我想为我的 webassembly 应用程序创建配置。它只需要能够存储一些键值对:无论是 JSON、XML、.cfg、.csv 还是 .txt 都可以。可以用 webassembly 做到这一点吗?我需要提供配置文件还是需要如何将配置文件交付给客户端?我将使用什么路径打开文件?
更多信息:我将直接 C 与 emcc 一起使用。我的构建命令是:
我没有向 javascript 公开任何内容。一切都是用 SDL 操作画布。我还没有写任何javascript。
我目前正在使用 Python 的简单 http 服务器服务python3 -m http.server 8080
我已经尝试过使用 libconfig,但我一直在编译它并让它找到配置文件。
c++ - 链接错误与 C++/Wasm 中 Emscripten 的仅标头库的 Boost 端口
我正在尝试编译一个 cpp 文件,以使用现有的Emscripten 端口在 Wasm 项目中使用 Boost 库进行一些测试:
https://github.com/emscripten-ports/boost
当我使用一些 Boost 模块时,它可以正常工作,例如本例中的lambda:
但是,当我在本例中使用其他模块(如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
似乎我缺少一些包含或链接,但我不知道如何将它们添加到 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
但它也不起作用,所以我认为这可能是一个端口问题。