2013-02-17 2 views
2

Visual C++ 8에서 최신 OpenCV 릴리스를 빌드하려고합니다. 디버그 및 릴리스 버전을 모두 빌드하려고하는 BUILD_ALL 대상을 사용하고 있습니다. opencv_python 응용 프로그램을 링크하려고하면 링크 오류가 발생합니다. 오류는 링커가 Python27_d.lib 라이브러리를 찾을 수 없다는 것입니다. 필자는 그 라이브러리가 없기 때문에 릴리스 라이브러리 만 필요합니다. 필자가 이해할 수없는 것은 프로젝트 구성에 필요한 릴리스 라이브러리 (_d없이)이며 결과 명령 줄에서 전달되는 내용입니다.Visual C++ 디버그 라이브러리 명명 규칙

디버그 버전이 빌드 ​​될 때 VS가 기본적으로 _d를 추가합니까? 해당 참조 된 라이브러리에 대해 선택적으로 해제 할 수 있습니까? BTW, 응용 프로그램의 릴리스 버전 괜찮아요.

+1

파이썬의 디버그 버전을 빌드해야한다고 생각합니다. Python27_d.lib를 직접 만드십시오. VC++에서 코드 컴파일 방법에 따라 두 가지 다른 런타임 라이브러리 (Debug 또는 Release)를 사용해야합니다. – martineau

답변

3

문제는 실제 파이썬 lib 디렉토리 이름을 지정하는 Python.h에 (특히 pyconfig.h에서) 실제로

[내가 믿는] 당신은 파이썬 디버그 라이브러리, 부스트 명을 사용할 필요가 없습니다 이미

이 pyconfig.h에서 Python debugging builds 볼이 문제를 다루었 다 : 그들은 모든 창은 특정 처리 Python.h의 래퍼 부스트/파이썬/세부/wrap_python.hpp을 향상에

/* For an MSVC DLL, we can nominate the .lib files used by extensions */ 
#ifdef MS_COREDLL 
# ifndef Py_BUILD_CORE /* not building the core - must be an ext */ 
#  if defined(_MSC_VER) 
      /* So MSVC users need not specify the .lib file in 
      their Makefile (other compilers are generally 
      taken care of by distutils.) */ 
#   ifdef _DEBUG 
#    pragma comment(lib,"python27_d.lib") 
#   else 
#    pragma comment(lib,"python27.lib") 
#   endif /* _DEBUG */ 
#  endif /* _MSC_VER */ 
# endif /* Py_BUILD_CORE */ 
#endif /* MS_COREDLL */ 

스튜 ff (특히 Python을 릴리스 한 상태에서 디버그 dll을 빌드 할 수 있습니다.) 아마도 대신 코드를 사용하여 시도해보십시오.