2016-10-14 1 views
4

Google 테스트 프레임 워크를 사용하고 테스트가 제대로 작동하는 unittest 프로젝트가 있습니다. 그러나 지금은 #include <boost/filesytem.hpp> 같은 boost::filesystem 헤더를 추가하고 내 프로젝트가 연결 및 컴파일 그 후 미세하지만 더 전혀 발견 검사와 내가 테스트를 실행할 때의 나에게주지 -이 코드가있는 경우처럼부울 :: 파일 시스템으로 헤더를 추가 한 후 더 이상 Google 테스트의 단위 테스트를 찾을 수 없습니다.

Process finished with exit code -1073741515 (0xC0000135) 
Empty test suite. 

:

#include <gtest/gtest.h> 
TEST(Test, Test1){ 
    ASSERT_FALSE(true); 
} 

는 완벽하게 잘 작동하고 실패한 테스트 케이스를 찾을 수 있습니다,하지만이 같은 부스트 ​​헤더를 추가하는 경우 :

#include <gtest/gtest.h> 
#include <boost/filesystem.hpp> 
TEST(Test, Test1){ 
    ASSERT_FALSE(true); 
} 

을 그 아무것도 후 발견. 나는 cmake/clion/cygwin 기반 env를 사용한다. 이러한 문제를 해결하는 방법에 대한 귀하의 아이디어에 대한 appriciated 것입니다.

답변

3

오류 코드를 나타냅니다

// 
// MessageId: STATUS_DLL_NOT_FOUND 
// 
// MessageText: 
// 
// The program can't start because %hs is missing from your computer. 
// Try reinstalling the program to fix this problem. 
// 
#define STATUS_DLL_NOT_FOUND    ((NTSTATUS)0xC0000135L) // winnt 

(What does error code 0xc0000135 mean when starting a .NET application? 참조)

내 생각 엔 당신이 테스트를 포함하는 동적 라이브러리와 구글 테스트를 사용합니다. Boost Filesystem을 추가 했으므로 Boost System 및 Boost Filesystem DLL과 링크됩니다.

그러나 테스트 러너는 이러한 종속성을로드 할 수 없으므로 (표시된 오류가 발생합니다). 부스트 DLL을 시스템 전체에 설치하거나 테스트 러너 대상의 출력 디렉토리 (또는 테스트 러너가 시작되는 곳)에 복사하거나 DLL 위치를 나타내는 매니페스트 파일을 사용하십시오.

업데이트 코멘트 작성자가 추가 한대로 물론 DLL에 연결하지 않으면 문제가 해결됩니다.

+1

또는 부스트 시스템과 파일 시스템 라이브러리를 정적 라이브러리로 컴파일하고 그 라이브러리 파일을 –

+0

에 링크하고 부스트 시스템 @ratchetfreak – sehe

+1

cmake에서 부스트 라이브러리를 정적 버전으로 사용하려면 1) 정적 라이브러리로 빌드해야합니다. 2) 'find_package (Boost ...)'전에 '(Boost_USE_STATIC_LIBS ON)'을 설정하십시오. –

관련 문제