2016-08-25 2 views
0

.lib 및 .dll과 같은 컴파일 된 라이브러리를 사용하지 않고 opencv 라이브러리의 C++ 소스 코드로 작업 할 수 있는지 물어보고 싶습니다.C++ 라이브러리의 소스 코드 (opencv)로 작업하기

라이브러리의 헤더 파일과 .cpp 파일로만 작업 할 수 있습니까?

이미지를 받아들이고 일련의 opencv 관련 작업을 수행하는 기본 C++ 클래스를 만들고 싶습니다. 그러나 기본 라이브러리로 여러 플랫폼 용 코드를 자유롭게 컴파일해야합니다. .lib 또는 .dll을 사용하면 여러 플랫폼에서 컴파일이 금지됩니다. 나는 C++ 소스 코드만을 사용하여 가능할 수 있다고 생각한다. 하지만 Visual Studio를 사용하여 추가 Include 디렉토리를 추가하면 LNK2019 오류가 발생합니다. 즉, "함수 또는 변수가 선언되었지만 정의되지 않았습니다".hpp 및 .cpp의 'right'디렉토리를 포함하지만 뭔가를 놓친다해도 .

+4

원하는 플랫폼의 소스 코드와 빌드 라이브러리를 직접 다운로드 한 다음 프로젝트를 다시 빌드하고 다시 빌드 할 수 있습니다 – slawekwin

답변

0

이것은 기본 코드의 일반적인 경우입니다. 당신이해야 할 일은 소스 코드를 다운로드하는 것입니다 (나는 이미 그렇게했다고 생각합니다). 그리고 당신이 필요로하는 플랫폼을 위해 그것을 별도로 빌드해야합니다.

프로젝트에는 사전 컴파일 된 결과 라이브러리 (정적 파일 lib 또는 동적 파일 dll)가 포함됩니다. 이 방법으로 라이브러리 파일은 별도로 보관되며 프로젝트의 모든 빌드가 아니라 한 번만 빌드됩니다.

Visual Studio에서 모든 구성에 대해 별도로 포함 경로를 설정할 수 있으므로 현재 아키텍처 용으로 빌드 된 라이브러리를 사용하도록 프로젝트를 설정할 수 있습니다.

0

위의 주석에서 @slawekwin이 작성한 내용에 덧붙여 빌드 및 대상 플랫폼에 대한 종속성 연결은 빌드 시스템의 부분으로 자동화 될 수 있습니다.

이전에 OpenCV를 빌드 한 경우 CMake를 접하게되었습니다. CMake external projects (EP)을 구성 할 수 있습니다. 타사 프로젝트의 소스 코드를 다운로드 한 다음 구성하고 빌드하고 을 설치하고 설치하십시오.

ExternalProject_Add(opencv 
    GIT_REPOSITORY ${git_protocol}://code.opencv.org/opencv.git 
    GIT_TAG 2.3.1 
    SOURCE_DIR opencv 
    BINARY_DIR opencv-build 
    UPDATE_COMMAND "" 
    PATCH_COMMAND "" 
    CMAKE_GENERATOR ${gen} 
    CMAKE_ARGS 
    ${ep_common_args} 
    -DBUILD_DOCS:BOOL=OFF 
    -DBUILD_EXAMPLES:BOOL=OFF 
    -DBUILD_NEW_PYTHON_SUPPORT:BOOL=OFF 
    -DBUILD_PACKAGE:BOOL=OFF 
    -DBUILD_SHARED_LIBS:BOOL=ON 
    -DBUILD_TESTS:BOOL=OFF 
# -DCMAKE_BUILD_TYPE:STRING=Release 
    -DWITH_FFMPEG:BOOL=OFF 
    -DCMAKE_INSTALL_PREFIX:PATH=${CMAKE_BINARY_DIR}/INSTALL 
) 

set(OPENCV_ROOT_DIR ${CMAKE_BINARY_DIR}/INSTALL) 
set(OPENCV_DIR ${CMAKE_BINARY_DIR}/INSTALL) 

또한 CMake EP 기반으로 hunter라는 C에 대한 크로스 플랫폼 패키지 관리자 ++, 살펴보고 재미있을 수있다 : 이것은 github repository에서 복사 OpenCV의에 대한 예입니다.