Emscripten 2.0.8 到 2.0.24 导致重大变化

Emscripten 2.0.8 to 2.0.24 caused breaking change

使用 Emscripten 2.0.8 我可以使用以下命令构建 wasm

emcc Test.cc -O3 -std=c++14 -I "F:\OpenCV4.5.2\include" "F:\OpenCV4.5.2\lib\libopencv_core.a" "F:\OpenCV4.5.2\lib\libopencv_calib3d.a" "F:\OpenCV4.5.2\lib\libopencv_features2d.a" "F:\OpenCV4.5.2\lib\libopencv_flann.a" "F:\OpenCV4.5.2\lib\libopencv_imgproc.a" "F:\OpenCV4.5.2\lib\libopencv_video.a" -s LLD_REPORT_UNDEFINED -s USE_ZLIB=1 -s ALLOW_MEMORY_GROWTH=1 -pthread --no-entry --bind -o Test.html

但是现在将 Emscripten 升级到 2.0.24 后,如果我尝试使用完全相同的静态库和完全相同的命令构建完全相同的文件,我会收到如下错误

wasm-ld: error: F:\OpenCV4.5.2\lib\libopencv_core.a(check.cpp.o): undefined symbol: std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> >::basic_string(std::__2::basic_string<char, std::__2::char_traits<char>, std::__2::allocator<char> > const&) wasm-ld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)

任何人都可以帮我重塑我的命令以使用 Emscripten 2.0.24 构建吗?

错误消息提到 libopencv_core.a 中缺少一个符号。尝试的第一件事是使用相同的编译器重新编译所有内容(包括所有依赖项),以防新编译器与旧编译器不向后兼容。