Visual Studio 2013에서 OpenCV 3.4.0 빌드하기
Study/OpenCV 2018. 1. 21. 14:46 |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줄 요약:
- darknet_io.cpp 파일에서 #include <opencv2/core.hpp> 문장을 #include "../precomp.hpp" 로 수정.
- face_alignmentimpl.hpp 파일에 #include "opencv2/core/softfloat.hpp" 문장 추가
- 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 |