2010-11-22 15 views
2

Ich verwende boost.process (zusätzliche Lib für Boost). Auf der Seite, die ich für den Link angegeben habe, finden Sie Anwendungsbeispiele. Ich installierte Bibliothek, fügen: #include <boost/process.hpp> und einige folgenden Code:Prozesse in Boost

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’ 

Und ich habe solche Fehler für alle beschriebenen Proben. Was ist los mit dir?


Ich weiß, dass echte Namespace Prozess sein sollte, aber ich sah in den Code und fand, dass es mit boost und dann processes Namensraum eingewickelt wird. Also dort sind nicht irgendein process Namensraum.

+0

Welches Beispiel möchten Sie kompilieren? Ich sehe nicht, dass bp :: command_line auf der verlinkten Seite referenziert. –

+0

gibt es viele verschiedene Versionen von boost.process, siehe hier http://stackoverflow.com/a/12327853/225186. Stellen Sie sicher, dass Sie eine konsistente Dokumentation verwenden. – alfC

Antwort

2

Verwenden Sie vielleicht nicht eine andere/ältere/alternative Version des Boost-Prozesses, d. H. Haben Sie in letzter Zeit einen Boost-Prozess von sandbox bekommen? Wenn Sie boost/process.hpp öffnen, sehen Sie oben das Folgende?

// Copyright (c) 2006, 2007 Julio M. Merino Vidal // Copyright (c) 2008, 2009 Boris Schaeling

Ich erinnere mich, dass eine andere Version des Boost-Prozess von einem anderen Autor in der es war Vergangenheit.

Ich habe mir einige der Prozessdateien von Vidal/Schaeling angesehen und sie verwenden definitiv alle den boost :: process Namensraum. Wenn Sie das in der Quelle nicht sehen, verwenden Sie möglicherweise eine andere Version. Außerdem habe ich keine Einträge für command_line in der verfügbaren Referenz unter http://www.highscore.de/boost/process/ gefunden. FYI, der Boost-Prozess hat in letzter Zeit auch zahlreiche Änderungen erfahren (nach Diskussionen auf der Boost-Mailing-Liste).

1

Nun, wie Sie selbst sagen, ist der Namensraum aus den Proben ::boost::process. Die Linie:

namespace bp = ::boost::processes

definiert nur einen Namespace Alias: bp:: ist ein Alias ​​für boost::processes. Schreiben bp::command_line ist genau wie Schreiben boost::processes::command_line. Da sich der command_line im Namespace boost::process befindet, wird der Typ nicht gefunden.

+0

Sehen Sie sich bitte mein Update an. – Ockonal

+1

@Ockonal: Sorry, bitte ignoriere meine Antwort. Ich würde gerne mehr helfen, aber ich kann boost.process von der Arbeit T_T nicht herunterladen – icecrime