I’m trying to build and install the OpenCV library on my windows os system using Cmake and MinGW.
Got the error below while the run the command “mingw32-make” on the command prompt:
C:\OpenCV>mingw32-make [ 2%] Built target zlib [ 2%] Building CXX object modules/core/CMakeFiles/opencv_core.dir/src/async.cpp.obj C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:40:18: error: 'mutex' in namespace 'std' does not name a type mutable std::mutex mtx; ^~~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:41:18: error: 'condition_variable' in namespace 'std' does not name a type mutable std::condition_variable cond_var; ^~~~~~~~~~~~~~~~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp: In member function 'bool cv::AsyncArray::Impl::get(cv::OutputArray, int64) const': C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:91:26: error: 'mutex' is not a member of 'std' std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:91:26: error: 'mutex' is not a member of 'std' C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:91:36: error: template argument 1 is invalid std::unique_lockstd::mutex lock(mtx); ^ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:91:43: error: 'mtx' was not declared in this scope std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:91:38: warning: unused variable 'lock' [-Wunused-variable] std::unique_lockstd::mutex lock(mtx); ^~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp: In member function 'bool cv::AsyncArray::Impl::wait_for(int64) const': C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:148:26: error: 'mutex' is not a member of 'std' std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:148:26: error: 'mutex' is not a member of 'std' C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:148:36: error: template argument 1 is invalid std::unique_lockstd::mutex lock(mtx); ^ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:148:43: error: 'mtx' was not declared in this scope std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:151:20: error: 'cond_var' was not declared in this scope return cond_var.wait_for(lock, std::chrono::nanoseconds(timeoutNs), cond_pred); ^~~~~~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:154:13: error: 'cond_var' was not declared in this scope cond_var.wait(lock, cond_pred); ^~~~~~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp: In member function 'void cv::AsyncArray::Impl::setValue(cv::InputArray)': C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:178:26: error: 'mutex' is not a member of 'std' std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:178:26: error: 'mutex' is not a member of 'std' C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:178:36: error: template argument 1 is invalid std::unique_lockstd::mutex lock(mtx); ^ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:178:43: error: 'mtx' was not declared in this scope std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:196:9: error: 'cond_var' was not declared in this scope cond_var.notify_all(); ^~~~~~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:178:38: warning: unused variable 'lock' [-Wunused-variable] std::unique_lockstd::mutex lock(mtx); ^~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp: In member function 'void cv::AsyncArray::Impl::setException(std::__exception_ptr::exception_ptr)': C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:206:26: error: 'mutex' is not a member of 'std' std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:206:26: error: 'mutex' is not a member of 'std' C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:206:36: error: template argument 1 is invalid std::unique_lockstd::mutex lock(mtx); ^ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:206:43: error: 'mtx' was not declared in this scope std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:215:9: error: 'cond_var' was not declared in this scope cond_var.notify_all(); ^~~~~~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:206:38: warning: unused variable 'lock' [-Wunused-variable] std::unique_lockstd::mutex lock(mtx); ^~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp: In member function 'void cv::AsyncArray::Impl::setException(cv::Exception)': C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:225:26: error: 'mutex' is not a member of 'std' std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:225:26: error: 'mutex' is not a member of 'std' C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:225:36: error: template argument 1 is invalid std::unique_lockstd::mutex lock(mtx); ^ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:225:43: error: 'mtx' was not declared in this scope std::unique_lockstd::mutex lock(mtx); ^~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:234:9: error: 'cond_var' was not declared in this scope cond_var.notify_all(); ^~~~~~~~ C:\OpenCV-3.4.16\opencv\sources\modules\core\src\async.cpp:225:38: warning: unused variable 'lock' [-Wunused-variable] std::unique_lockstd::mutex lock(mtx); ^~~~ modules\core\CMakeFiles\opencv_core.dir\build.make:177: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/src/async.cpp.obj' failed mingw32-make[2]: *** [modules/core/CMakeFiles/opencv_core.dir/src/async.cpp.obj] Error 1 CMakeFiles\Makefile2:2003: recipe for target 'modules/core/CMakeFiles/opencv_core.dir/all' failed mingw32-make[1]: *** [modules/core/CMakeFiles/opencv_core.dir/all] Error 2 Makefile:164: recipe for target 'all' failed mingw32-make: *** [all] Error 2
Request someone to kindly pls help.
The 2 errors resulted after I ran the mingw32-make command.