VS2015 + OpenCV3.4.2 소스 컴파일 오류 레코드(Video 모듈 컴파일 실패)

3595 단어 OpenCV
@TOCVS2015 + OpenCV3.4.2 소스 컴파일 오류 레코드(Video 모듈 컴파일 실패)
VS2015 + OpenCV3.4.2 소스 컴파일 오류 레코드(Video 모듈 컴파일 실패)
이 블로그의 목적은 OpenCV3 원본 컴파일에서의 오류를 기록하기 위한 것이다.
컴파일 환경
  • 소스 코드
  • OpenCV3.4.2
  • OpenCV_Contrib3.4.2

  • 컴파일 도구
  • CMake3.11
  • VS2015


  • 오류 로그
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(800): error C2065: “ID3D11Multithread”:        
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(800): error C2923: “`anonymous-namespace'::ComPtr”:     “T”,“ID3D11Multithread”             
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(800): error C2133: “D3DDevMT”:      
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(800): error C2512: “`anonymous-namespace'::ComPtr”:              
    46>  E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(123): note:   “`anonymous-namespace'::ComPtr”   
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(802): error C2100:        
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(802): error C2672: “IID_PPV_ARGS_Helper”:           
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(802): error C2784: “void **IID_PPV_ARGS_Helper(T **)”:    “`anonymous-namespace'::ComPtr *” “T **”        
    46>  C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\combaseapi.h(231): note:   “IID_PPV_ARGS_Helper”   
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(802): error C2660: “IUnknown::QueryInterface”:       1    
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(804): error C2678:    “->”:       “`anonymous-namespace'::ComPtr”           (         )
    46>  E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(145): note:    “T *`anonymous-namespace'::ComPtr::operator ->(void) const”
    46>  E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(804): note:         “(`anonymous-namespace'::ComPtr)” 
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(804): error C2039: “SetMultithreadProtected”:   “`anonymous-namespace'::ComPtr”   
    46>  E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(123): note:   “`anonymous-namespace'::ComPtr”   
    46>E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(805): error C2662: “void `anonymous-namespace'::ComPtr::Release(void)”:    “this”   “`anonymous-namespace'::ComPtr”   “`anonymous-namespace'::ComPtr &”
    46>  E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(805): note:     :    “`anonymous-namespace'::ComPtr”   “`anonymous-namespace'::ComPtr”
    46>  E:\Develop\OpenCV\OpenCV342\sources342\opencv-3.4.2\modules\videoio\src\cap_msmf.cpp(805): note:                       
    

    오류 분석
  • 비디오 모듈 컴파일 오류
  • Windows SDK 버전은 10.0.10586이며, 오류는 이것과 관련이 있을 수 있습니다
  • 솔루션 시도
  • OpenCV 버전 교체
  • CMake 버전 교체
  • Windows SDK 버전 교체
  • 문제 해결
    시도 결과, 문제는 Windows SDK 및 릴리즈에서 10.0.10240으로 교체한 후 성공적으로 컴파일되었습니다.
    문제가 남다
    아직 구체적으로 어떤 원인인지 확실하지 않으니 좀 더 공부한 후에 분석해야 한다.

    좋은 웹페이지 즐겨찾기