WebAssembly |错误:“C/ObjC”不允许使用无效参数“-std=c++11”
Posted
技术标签:
【中文标题】WebAssembly |错误:“C/ObjC”不允许使用无效参数“-std=c++11”【英文标题】:WebAssembly | error: invalid argument '-std=c++11' not allowed with 'C/ObjC' 【发布时间】:2018-04-23 05:13:13 【问题描述】:我有一个包含 C++ 和 C 文件的项目,我正在使用 Emscripten 使用此命令从命令行编译它:
emcc -s WASM=1 -o output.html -s "EXTRA_EXPORTED_RUNTIME_METHODS=['ccall', 'cwrap', 'Pointer_stringify']" -s ASSERTIONS=1 -O1 -O2 -O3 -std=c++11 -s ALLOW_MEMORY_GROWTH=1 -s NO_EXIT_RUNTIME=1 file1.cpp file2.c
我需要使用 c++11 才能工作,但由于某些文件在 C 中,因此会出现此错误:
error: invalid argument '-std=c++11' not allowed with 'C/ObjC'
有什么方法可以告诉编译器只对 C++ 文件使用 c++11 而不是 C 文件?
【问题讨论】:
可以分别编译和链接,即编译file1.cpp
和file2.c
,然后链接file1.o
和file2.o
。
【参考方案1】:
是的,您可以use the environment variable CXXFLAGS
这样做。
实际上,在您的情况下,您应该将命令行一分为二:一个用于 C++ 文件,一个用于 C 文件。这就是我们通常在 Makefile 中找到的内容。
【讨论】:
以上是关于WebAssembly |错误:“C/ObjC”不允许使用无效参数“-std=c++11”的主要内容,如果未能解决你的问题,请参考以下文章
WebAssembly 编译器错误:使用外部库编译时未定义符号
如何解决 WebAssembly 应用程序中与 HttpClient 相关的错误
Uno.Lottie WebAssembly 中未捕获的类型 JavaScript 错误
在 .NET6 Blazor Webassembly 应用程序中使用外部程序集生成错误
嵌入 WebAssembly 运行时和实例化 WebAssembly 模块的几大要素
CVE-2018-4121 JavaScriptCore WebAssembly wasm文件解析错误导致越界写漏洞分析