OpenCV 3.4.0 소스 코드를 Visual Studio 2017에서 빌드를 하면 특별한 에러 없이 잘 빌드가 됩니다. 그러나 Visual Studio 2013에서 OpenCV 3.4.0 소스 코드를 빌드하면 에러가 발생합니다. 일단 기본적인 빌드 설정은 아래와 같습니다.


  • Visual Studio 12 2013 x64
  • BUILD_opencv_python3 선택 해제
  • BUILD_opencv_world 선택
  • opencv_contrib 소스 코드 포함
  • WITH_CUDA 선택 해제


위와 같이 설정한 후 Visual Studio 2013으로 빌드할 때 나오는 에러 메시지 중 일부를 나열하면 다음과 같습니다.

오류    12    error C2065: 'int32_t' : 선언되지 않은 식별자입니다.    C:\opencv\opencv-3.4.0\modules\dnn\src\darknet\darknet_io.cpp    518    1    opencv_world
오류    14    error C2065: 'major_ver' : 선언되지 않은 식별자입니다.    C:\opencv\opencv-3.4.0\modules\dnn\src\darknet\darknet_io.cpp    518    1    opencv_world
오류    161    error C2061: 구문 오류 : 식별자 'uint64_t' (C:\opencv\opencv_contrib-3.4.0\modules\face\src\face_alignment.cpp)    c:\opencv\opencv_contrib-3.4.0\modules\face\src\face_alignmentimpl.hpp    113    1    opencv_world


opencv_world 모듈을 빌드하려고 하는데 int32_t, major_ver, uint64_t 같은 타입을 인식하지 못하는 것인데요, 사실 기본적인 데이터 타입인 것 같은데 에러가 발생하는 것이 이상합니다.


개인적으로는 위 에러를 해결하기 위해 darknet_io.cpp 파일에 #include <stdint.h> 구문을 추가해서 해결을 했었는데요, OpenCV GitHub를 찾아보니 이미 다른 방식의 해결 방법이 메인 소스에 추가되어 있었습니다.

https://github.com/opencv/opencv/pull/10521/files



위와 같이 <opencv2/core.hpp> 파일 대신 "../precomp.hpp" 파일을 #include 하는 형태로 변경하면 됩니다.


그러나 darknet_io.cpp 파일을 바꾸더라도 face_alignmentimpl.hpp 파일에서도 비슷한 에러가 발생합니다. face 모듈은 opencv_contrib 쪽 소스에 있고, 여기에는 precomp.hpp 파일이 없으므로 face_alignmentimpl.hpp 파일을 열어서 아래와 같이 수정합니다.


위와 같이 수정하고 빌드하면 opencv_world340.dll 파일을 정상적으로 빌드가 됩니다.


추가로 opencv 샘플 프로젝트를 빌드할 때 dnn 아래쪽 샘플 프로젝트에서도 빌드 에러가 발생합니다. 이때는 torch_enet.cpp 파일에서 에러가 발생하는데요, 이 파일을 열어서 아래와 같이 수정하면 에러가 사라집니다.


위 수정 사항에서 하나는 "opencv2/core/softfloat.hpp" 라고 쓰고 하나는 <opencv2/core/softfloat.hpp> 라고 입력을 했는데요, 어차피 컴파일러가 해석하는 것은 동일하고 다만 주위 소스 코드 형식을 맞쳐준 것이라고 보면 됩니다.


3줄 요약:

  1. darknet_io.cpp 파일에서 #include <opencv2/core.hpp> 문장을 #include "../precomp.hpp" 로 수정.
  2. face_alignmentimpl.hpp 파일에 #include "opencv2/core/softfloat.hpp" 문장 추가
  3. torch_enet.cpp 파일에 #include <opencv2/core/softfloat.hpp> 문장 추가


'Study > OpenCV' 카테고리의 다른 글

OpenCV Freetype 모듈을 이용하여 영상에 한글 출력하기  (8) 2018.04.04
OpenCV 3.4.1 릴리즈  (0) 2018.02.27
OpenCV 3.4.0 Release  (0) 2017.12.23
Image Watch 2017 사용하기  (3) 2017.12.06
OpenCV 3.3.1 Releases  (0) 2017.10.25
Posted by kkokkal
: