编译C++;使用Emscripten将OpenCV代码转换为Javascript 我有C++,包含OpenCV的头文件。我正在尝试使用Emscripten将其转换为WebAssembly。当我尝试使用以下方法编译时: em++main.cpp-s WASM=1-o seamCarve.html

编译C++;使用Emscripten将OpenCV代码转换为Javascript 我有C++,包含OpenCV的头文件。我正在尝试使用Emscripten将其转换为WebAssembly。当我尝试使用以下方法编译时: em++main.cpp-s WASM=1-o seamCarve.html,javascript,c++,opencv,webassembly,Javascript,C++,Opencv,Webassembly,我收到以下错误消息: #include <opencv2/imgproc/imgproc.hpp> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1 error generated. shared:ERROR: compiler frontend failed to generate LLVM bitcode, halting #包括 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 生成1个错误。 共享:错误:编译器前端无法生成LLVM位

我收到以下错误消息:

#include <opencv2/imgproc/imgproc.hpp>
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1 error generated.
shared:ERROR: compiler frontend failed to generate LLVM bitcode, halting
#包括
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
生成1个错误。
共享:错误:编译器前端无法生成LLVM位代码,正在停止
这是我第一次使用WebAssembler,所以我真的不知道该怎么做。我编译了OpenCV库以创建OpenCV.js,如下链接中的步骤所述:


我不确定是否需要在编译中包含此js文件,或者在编译时是否需要包含每个头文件

一般来说,在C/C++代码中使用库时,在生成可执行二进制文件时必须链接库

因此,在使用emscripten时,首先必须编译库,然后可以在链接时使用静态库文件
mylib.a
,以便
emcc
命令如下所示:


em++-s WASM=1 main.cpp libopencv.a-o seamCarve.html

OpenCV.js将包含在html文档中,类似于任何JavaScript代码。然后,您可以从JavaScript代码访问几乎所有的OpenCV函数

现在,您可以为WebAssembly构建OpenCV。好的方面是,您不需要更改JavaScript代码,因为OpenCV.js文件中包含WASM模块,但您需要为WASM(WebAssembly)编译

看看这个链接

你是说你也有opencv.js和它的.wasm文件吗?@bumsikim我编译了opencv.js文件,却不知道我是否需要它。如果我错了,请纠正我,但它好像是用来调用JavaScript中的OpenCV函数,而不是编译包含OpenCV函数到JavaScript的C++代码。我没有任何.wasm文件。谢谢你的解释。在获得OpenCV的WASM格式之后,我如何编译我自己的C++代码(其中包含OpenCV)到WASM文件。请您指导我必须使用的命令好吗?在获得OpenCV wasm版本后,我这样做的方式是从JavaScript访问它。你需要做的一切都是用C++版本的JavaScript(不是所有的,而是大部分的)。注意,即使使用JavaScript,WASM也是正在进行图像处理的一个。我已经尝试过,但是C++的WASM版本的代码比JavaScript WASM快2倍。这就是使用cpp而不是JSP的主要原因。谢谢!请您描述一下如何编译像opencv这样的库,如何访问libopencv.a?