【发布时间】:2019-10-17 06:12:55
【问题描述】:
我正在尝试设置 OpenCV,一些基本代码可以从它开始,看看我能做什么。但是每次我尝试编译应用程序时,我都会收到错误消息
'Mutex' is not a member of 'cv'。尝试了其他一些解决方案,例如。 this
我的环境是 VS Code,c_cpp_properties.json 设置如下:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}",
"C:\\MinGW\\lib\\gcc\\mingw32\\8.2.0\\include\\c++",
"C:\\MinGW\\lib\\opencv\\build\\include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.17763.0",
"compilerPath": "C:\\MinGW\\posix\\mingw64\\bin\\gcc.exe",
"cStandard": "c11",
"cppStandard": "c++17",
"intelliSenseMode": "gcc-x64",
"browse": {
"path": [
"${workspaceFolder}"
],
"limitSymbolsToIncludedHeaders": true,
"databaseFilename": ""
}
}
],
"version": 4
}
尝试了几次重新安装 g++ 和所有 minGW 的东西,没有任何效果。
这是我的main.cpp代码:
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <string>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
const string file_name = "sunflower.jpg";
Mat img = imread(file_name);
if( !img.data )
{
cout << "Nie odnalezionu pliku " << file_name;
return -1;
}
const string window_name = "OpenCV_1";
namedWindow(window_name, WINDOW_AUTOSIZE);
imshow(window_name, img);
waitKey(0);
return 0;
}
控制台输出
Executing task: g++ -g -o bin/debug.exe src/main.cpp -IC:\MinGW\lib\opencv\build\include -LC:\MinGW\lib\opencv\build\x64\vc15\bin -llibopencv_highgui242 -llibopencv_features2d242 -llibopencv_flann242 -llibopencv_objdetect242 -llibopencv_video242 -llibopencv_calib3d242 -llibopencv_contrib242 -llibopencv_imgproc242 -llibopencv_core242 -llibopencv_ml242 -llibopencv_legacy242 -llibopencv_nonfree242 -llibopencv_photo242 -llibopencv_stitching242 -llibopencv_videostab242 <
In file included from C:\MinGW\lib\opencv\build\include/opencv2/core.hpp:3290,
from C:\MinGW\lib\opencv\build\include/opencv2/highgui.hpp:46,
from C:\MinGW\lib\opencv\build\include/opencv2/highgui/highgui.hpp:48,
from src/main.cpp:1:
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:697:14: error: 'recursive_mutex' in namespace 'std' does not name a type
typedef std::recursive_mutex Mutex;
^~~~~~~~~~~~~~~
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:697:9: note: 'std::recursive_mutex' is defined in header '<mutex>'; did you forget to '#include <mutex>'?
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:60:1:
+#include <mutex>
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:697:9:
typedef std::recursive_mutex Mutex;
^~~
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:698:29: error: 'Mutex' is not a member of 'cv'
typedef std::lock_guard<cv::Mutex> AutoLock;
^~~~~
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:698:29: note: suggested alternative: 'Matx'
typedef std::lock_guard<cv::Mutex> AutoLock;
^~~~~
Matx
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:698:29: error: 'Mutex' is not a member of 'cv'
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:698:29: note: suggested alternative: 'Matx'
typedef std::lock_guard<cv::Mutex> AutoLock;
^~~~~
Matx
C:\MinGW\lib\opencv\build\include/opencv2/core/utility.hpp:698:34: error: template argument 1 is invalid
typedef std::lock_guard<cv::Mutex> AutoLock;
^
The terminal process terminated with exit code: 1
我需要一个解决方案来配置 g++ 以编译应用程序。或者做一些我还不知道的事情。
【问题讨论】:
-
尝试将
-std=c++11添加到g++命令中。 -
你找到解决办法了吗?
标签: c++ windows opencv g++ mingw