【发布时间】:2021-07-18 22:47:05
【问题描述】:
我正在尝试在 cpp 中创建一个使用 openCV 并将其编译为 wasm 的简单应用程序。我按照文档并尝试生成静态库文件 *.a 和将 opencv 库引用为 .o 文件的 cpp 文件。这是我遇到错误的地方。 我运行了命令
- cmake ../ -B./ -DBUILD_SHARED_LIBS=OFF -DCMAKE_OSX_ARCHITECTURES="x86_64" -DWITH_1394=OFF -DWITH_FFMPEG=OFF -DBUILD_TESTS=OFF 将 opencv 静态构建到当前文件夹中。然后我运行命令
- 制作
- sudo make install
之后我导航到我的 cpp 文件所在的位置,然后运行
-
cmake .
-
制作
基于此,我得到了可执行文件。在这里一切都很好。 但是当我根据文档运行以下命令时,我得到了错误。
-
emcmake cmake ../ -B./ -DBUILD_SHARED_LIBS=OFF -DCMAKE_OSX_ARCHITECTURES="x86_64" -DWITH_1394=OFF -DWITH_FFMPEG=OFF -DBUILD_TESTS=OFF
-
制作制作
发生错误。
制作:制作 扫描目标 gen-pkgconfig 的依赖关系 [ 0%] 生成opencv.pc [ 0%] 构建目标 gen-pkgconfig 扫描目标 ittnotify 的依赖关系 [ 0%] 构建 C 对象 3rdparty/ittnotify/CMakeFiles/ittnotify.dir/src/ittnotify/ittnotify_static.c.o 在 /Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_static.c:59 包含的文件中: /Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h:376:12:错误:函数'TBB_machine_fetchadd4'的隐式声明在C99 [-Werror,-Wimplicit-function-declaration] 返回 TBB_machine_fetchadd4(ptr, 1) + 1L; ^ 产生 1 个错误。 emcc:错误:'/Users/atul109/MyDocuments/work/new/emscripten_playground/emsdk/upstream/bin/clang -target wasm32-unknown-emscripten -D__EMSCRIPTEN_PTHREADS=1 -DEMSCRIPTEN -fignore-exceptions -mllvm -combiner -global-alias-analysis=false -mllvm -enable-emscripten-sjlj -mllvm -disable-lsr -D__EMSCRIPTEN_major=2 -D__EMSCRIPTEN_minor__=0 -D__EMSCRIPTEN_tiny__=17 -D_LIBCPP_ABI_VERSION=2 -Dunix -D__unix -D__unix__ -Werror =隐式函数声明-Xclang -iwithsysroot/include/SDL --sysroot=/Users/atul109/MyDocuments/work/new/emscripten_playground/emsdk/upstream/emscripten/cache/sysroot -Xclang -iwithsysroot/include/compat -I /Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/include -I/Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/WasmBuild/3rdparty/ippicv /ippicv_lnx/icv/include -I/Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/WasmBuild/3rdparty/ippicv/ippicv_lnx/iw/include -I/Users/ atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/WasmBuild -fsigned-char -W -Wall -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point - Wformat -Werror=format-security -Wmissing-declarations -Wmissing-prototypes -Wstrict-prototypes -Winit-self -Wpointer-arith -Wshadow -Wsign-promo -Wuninitialized -Winconsistent-missing-override -Wno-delete-non-virtual- dtor -Wno-unnamed-type-template-args -Wno-comment -Wno-deprecated-enum-enum-conversion -Wno-deprecated-anon-enum-enum-conversion -fdiagnostics-show-option -pthread -Qunused-arguments - ffunction-sections -fdata-sections -fvisibility=hidden -fvisibility-inlines-hidden -Wno-implicit-fallthrough -Wno-undef -Wno-sign-compare -O3 -DNDEBUG -DNDEBUG -fPIC -c -pthread /Users/atul109/ MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_static.c -o CMakeFiles/ittnotify.dir/src/ittnotify/ittnotify_static.co' 失败(1) make[2]: *** [3rdparty/ittnotify/CMakeFiles/ittnotify.dir/src/ittnotify/ittnotify_static.c.o] 错误 1 make[1]: *** [3rdparty/ittnotify/CMakeFiles/ittnotify.dir/all] 错误 2 make: *** [全部] 错误 2 emmake: 错误: 'make' 失败 (2)
据我了解,ittnotify 导致错误。但不知何故,当我进行正常的 cmake 和 make 时,一切都很好。它只对 emcmake cmake 和 emmake make 执行此操作。
/Users/atul109/MyDocuments/work/new/emscripten_playground/opencv-3.4.14/3rdparty/ittnotify/src/ittnotify/ittnotify_config.h:376:12:错误:函数'__TBB_machine_fetchadd4'的隐式声明在C99 [-Werror,-Wimplicit-function-declaration] 返回 __TBB_machine_fetchadd4(ptr, 1) + 1L; ^ 产生 1 个错误。
请帮忙。
【问题讨论】:
-
我认为这是一个错误报告的主题,而不是这里的问题。为了准备在这里提问,您必须从您尝试编译的代码中提取minimal reproducible example,这可能不是您想要的。作为这里的新用户,也可以使用tour 并阅读How to Ask。
标签: c++ opencv cmake webassembly emscripten