2017-09-27 11 views
0

프로젝트에서 OpenVDB 라이브러리를 사용하고 싶습니다. 라이브러리는 \ MD (https://github.com/rchoetzlein/win_openvdb에 설명 된대로)를 사용하여 릴리스 버전의 Windows7 x64에서 성공적으로 컴파일되었습니다. OpenVDB_cookbook도 성공적으로 컴파일되고 실행됩니다. 내 자신의 코드를 요리 책에 넣으면 컴파일되고 성공적으로 실행됩니다.OpenVDB 링커 오류 : 해결되지 않은 외부 기호

그러나,

  • 내가 기존 프로젝트에 라이브러리를 연결하면,

  • 또는 나는 새로운 프로젝트 (요리 책) 동일한 코드를 붙여 같은 cmakelists.txt를 사용, 복사 ,

그것이 링커 오류가 발생, 'LNK2019을 .cmake 파일과 요리 책과 같은 프로젝트 속성에서 모두 같은 옵션 * 찾기 : 해결되지 않은 실외 L 심볼 "void_cdecl openvdb :: v3_0_0 : 초기화 (공극)"메인 함수에 참조 '형태의

심지어 간단한 코드 :

#include <openvdb.h> 
void main() 
{ 
    openvdb::initialize(); 
} 

이 링커 오류가 발생.

어떤 아이디어가 잘못 되었나요? 나는 며칠 동안 그것에 있고 그것을 해결할 수 없었다.

모든 라이브러리 IlmBase, OpenEXR, glew, glfw, boost 및 OpenVDB는 cmake를 사용하여 성공적으로 연결되며 프로젝트 속성 페이지에 있습니다.

도움 주셔서 감사합니다.

+0

CMake에서 "공유 라이브러리"를 선택하셨습니까? 그렇다면 새 프로젝트에 DLL을 가지고 가야합니다. – Kev1n91

+0

@ Kev1n91 의견을 보내 주셔서 감사합니다. 모든 dll은 실행 파일이있는 폴더에 있으며, 이미 cmakelists.txt에있는 post_copy 매크로에 의해 수행됩니다. 공유 라이브러리를 선택할 수있는 옵션이 없습니다. 그것은 cmake GUI에 있어야 하는가? 또는 cmake 파일에 써야합니까? –

+0

@ Kev1n91 좀 더 자세히 설명해 주시겠습니까? 각 라이브러리에 대해 "target_link_libraries"를 사용하여 * .lib 파일을 추가하고 cmake 파일에 "include_directories"를 사용하여 include 디렉토리를 추가하십시오. cmake GUI에서 모든 라이브러리의 * .lib 파일이 있는지 확인합니다. 예를 들어 구성 후 "OpenVDB Library : */OpenVDB/lib/openvdb.lib"에 나타납니다. 그리고 VS의 프로젝트 속성에도 존재하는지 확인합니다. "CMake Gui"의 –

답변

0

dir \ src를 추가하면 문제가 해결되었습니다. 및 dir \ src ..를 속성 -> C/C++ -> 일반 아래의 추가 디렉토리에 추가합니다. 여기서 dir은 소스와 빌드가있는 디렉토리입니다. 왜 내가 이것을 추가해야하는지 모르겠다.