OpenCV:使用imwrite()函数时无法编译

Sag*_*usA 3 c++ linker opencv compilation libstdc++

在我简单的第一个OpenCV应用程序中,我想保存由cam获取的帧,所以我正在使用imwrite()教程说.问题是,我无法编译因为我收到此错误:

Undefined symbols for architecture x86_64:
"cv::imwrite(cv::String const&, cv::_InputArray const&, std::vector<int,  std::allocator<int> > const&)", referenced from:
_main in video-87ad7a.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

在SO中阅读一些帖子我发现它是一个关于使用的C++标准库的问题,所以我添加了标志libstdc++但是以下内容:

g++ -stdlib=libstdc++ -I/usr/local/include -L/usr/local/lib/ -g -o binary video.cpp -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_stitching -lopencv_videoio -lopencv_videostab
Run Code Online (Sandbox Code Playgroud)

还没有解决问题.我该怎么办?

更新 似乎是解决方案.我不知道我失踪的该死的旗帜是什么

小智 11

看起来你错过了'-lopencv_imgcodecs',其中imwrite()存在.
请在此处参阅OpenCV imgcodecs头文件.

  • 有趣的是-当我切换到clang时,我开始遇到该错误,即使以前使用gcc时它也没有问题。 (2认同)