2010-11-22 8 views
2

나는 부풀리기를 위해 boost.process (추가 lib)을 사용하고 있습니다. 링크를 위해 제공 한 페이지에서 사용 예제를 찾을 수 있습니다. #include <boost/process.hpp>을 일부 다음 코드 : I 추가, 라이브러리를 설치부스트 과정

namespace bp = ::boost::processes; // In samples the namespace name is process! 
bp::command_line temp("ls"); 

error: ‘command_line’ is not a member of ‘bp’ 

그리고 나는 모든 설명 샘플 이러한 오류가 있습니다. 뭐가 문제 야?


나는 실제 네임 스페이스 과정해야한다고 알고 있지만, 나는 코드에보고하고 그 다음 processes 네임 스페이스를 boost을 포장 하 고있어 것을 발견했다. 따라서 이 아니며 process 네임 스페이스가 아닙니다.

+0

샘플을 컴파일 하시겠습니까? 내가 링크 한 페이지에서 참조 된'bp :: command_line'이 보이지 않습니다. –

+0

boost.process에는 여러 가지 버전이 있습니다. 여기 http://stackoverflow.com/a/12327853/225186을 참조하십시오. 일관성있는 문서를 사용하고 있는지 확인하십시오. – alfC

답변

2

다른/이전/보조 버전의 부스트 프로세스를 사용하고 있지 않습니까? 즉, 최근에 sandbox에서 부스트 프로세스를 얻었습니까? boost/process.hpp를 열면 상단에 다음이 표시됩니까?

// 저작권 (C) 2006, 2007 훌리오 M. 메리노 비달 // 저작권 (C) 2008, 2009 보리스 Schaeling

나는에서 사용할 수있는 다른 저자에 의해 부스트 프로세스의 다른 버전이 있었다는 것을 기억 과거.

나는 Vidal/Schaeling의 프로세스 파일 중 일부를 보았고, 분명히 boost :: process 네임 스페이스를 사용했다. 소스에서 해당 항목이 보이지 않으면 다른 버전을 사용하고있는 것입니다. 또한 http://www.highscore.de/boost/process/에서 사용할 수있는 참조에서 command_line에 대한 항목을 찾지 못했습니다. FYI, 부스트 프로세스도 최근에 많은 변화를 겪었습니다 (메일 링리스트에 대한 논의 후).

1

여러분이 직접 말한 것처럼 샘플의 네임 스페이스는 ::boost::process입니다. 라인 :

namespace bp = ::boost::processes

만 네임 스페이스 별칭을 정의 bp::boost::processes의 별칭입니다. bp::command_line을 쓰는 것은 boost::processes::command_line과 똑같은 내용입니다. command_lineboost::process 네임 스페이스에 있기 때문에 형식을 찾을 수 없습니다.

+0

내 업데이트를보십시오. – Ockonal

+1

@Ockonal : 죄송합니다. 제 대답을 무시하십시오. 더 많은 것을 돕고 싶습니다만, T_T에서 boost.process를 다운로드 할 수 없습니다. – icecrime