2013-06-17 1 views
4

(thomas pevny's source code to calculate the subtractive pixels adjacency matrix)을 컴파일하려고합니다. 이 코드는 이전에 libboost 및 libpng 라이브러리를 설치하도록 요청합니다.이 라이브러리는 성공적으로 완료되었습니다.부스트 라이브러리로 C++ 코드를 컴파일 할 때의 문제

하지만 'make'명령을 실행하면 터미널에 다음 오류가 표시됩니다.

spam.cpp:169:26: error: ‘class boost::filesystem3::directory_entry’ has no member named ‘leaf’ 
spam.cpp:179:20: error: ‘class boost::filesystem3::path’ has no member named ‘native_file_string 

이 문제를 해결할 방법이 있습니까? 다른 libboost 버전을 설치해야합니까?

감사합니다.

답변

6

leaf()은 더 이상 사용되지 않습니다.

되지 않습니다 기능과 새 이름이 목록을 참조하십시오 : commment에 대한

http://www.boost.org/doc/libs/1_45_0/libs/filesystem/v2/doc/index.htm

편집 :

boost::filesystem::path p("foo.txt"); 
    std::cout << p.filename() << std::endl; 
+0

native_file_string을 file_string()으로 대체하여 두 번째 오류를 수정했지만, leaf()를 path(). filename()으로 대체하면 다른 오류가 발생합니다. 코드 조각은 다음과 같습니다. string fileName = file-> path(). filename(); // 이전에 file-> leaf()였습니다. – mad

+1

음, 무엇이 오류입니까? – Salgar

+0

다음과 같은 오류가 발생합니다 : spam.cpp : 168 : 42 : error : 'boost :: filesystem3 :: path'를 비 스칼라 유형으로 변환 'std :: string {aka std :: basic_string }' – mad

2

leaf()은 다음과 같습니다

그것은이 같은되어야한다 더 이상 사용되지 않습니다. 참조 : http://www.boost.org/doc/libs/1_46_1/libs/filesystem/v3/doc/reference.html#directory_iterator-members BOOST_FILESYSTEM_NO_DEPRECATED없이 게임을 시도 할 수 있습니다.

+0

답장을 보내 주셔서 감사합니다. native_file_string을 file_string()으로 대체하여 두 번째 오류를 수정했지만 path(). filename()으로 leaf()를 대체하면 다른 오류가 발생합니다. 코드 조각은 다음과 같습니다. string fileName = file-> path(). filename(); // 이전에 file-> leaf()였습니다. 변수 파일은 디렉토리 반복자입니다. 오류는 다음과 같습니다 : spam.cpp : 168 : 42 : error : 'boost :: filesystem3 :: path'를 비 스칼라 유형으로 변환 'std :: string {aka std :: basic_string }'오류가 필요합니다. – mad

+1

'path.filename()'은'String' 타입이 아니며'path' 타입입니다. 'String'을 얻으려면'native()'('path.filename(). native()')를 시도해보십시오. –

+0

답장을 보내 주셔서 다시 한 번 감사드립니다. 이제 다음과 같은 오류가 발생했습니다 : spam.cpp : 168 : 30 : error : '((boost :: iterator_facade file))> boost :: iterator_facade :: operator ->() -> boost :: filesystem3 :: directory_entry :: path '에 클래스 유형이 없습니다. 나는 그것을 고치려고 노력할 것이다. 다시 고마워한다. – mad

0

@Salgar 및 @ Jean-Baptiste Yunès 제안으로 문제가 해결되었으며 makefile에 -lboost_system을 -lboost_system 뒤에 추가하여 문제가 해결되었습니다. 여러분 감사합니다.

관련 문제