2

boost_1_41_0 をインストールし、xml 解析に関するいくつかのチュートリアルに従ってみます。

#include <boost/property_tree/ptree.hpp>
int main(){
  using boost::property_tree::ptree;
  ptree pt;
  cout<<"Here is an XML test!\n";
  return 0;
}

しかし問題は、ブーストが必要なヘッダーを見つけられないことです:

gcc.compile.c++ bin/gcc-4.6.0/debug/main.o
main.cpp:1:46: fatal error: boost/property_tree/ptree.hpp: No such file or  directory
compilation terminated.

<> の代わりに "" を使用しても役に立ちません。オプション cxxflags=-I/pass/to/this/header も渡そうとしましたが、これも機能しません。ヘッダーへのフル パスを使用する場合のみ - 動作しますが、別のヘッダー ファイルに依存しているため、見つけることができません。

それでは、ブースト インストールを独自のインクルード ディレクトリに見せるにはどうすればよいでしょうか。ありがとう。

4

3 に答える 3

6

ブースト ヘッダーの場所をコンパイラに知らせる必要があります。ただし、このインクルード ファイルが存在するディレクトリではなく、"boost" ディレクトリが配置されているディレクトリへのパスを渡す必要があります。したがって、たとえば、ブースト ヘッダーが に/opt/boost/1.47.0/includeあり、ファイルが にある場合、 :を使用してコンパイラ/opt/boost/1.47.0/include/boost/property_tree/ptree.hppに渡す必要があります。または、これらのヘッダーから警告を受け取らないように使用することをお勧めします。/opt/boost/1.47.0/include-I-I/opt/boost/1.47.0/include-isystem /opt/boost/1.47.0/include

coutええ、グローバル名前空間に がないことを忘れていました。 を使用するstd::cout必要がusing std::cout;ありusing namespace std;ます#include <iostream>。さらに、関数内のreturnステートメントはmainC++ では必要ありません。何か他のものを返さない限り、デフォルトで 0 が返されるため、その行を単純に削除できます。

それが役に立てば幸い。幸運を!

于 2011-09-07T21:16:11.747 に答える
0

私のマシンで恐ろしい解決策を見つけました。ブースト 1.49 には、libboost1.49-dev で示されているように、boost1.49-dev に xml_parser.hpp が含まれています: /usr/include/boost/property_tree/xml_parser.hpp

しかし、自分のマシンにインストールされている Spotify リポジトリが原因で奇妙なエラーが発生したため、自分のマシンにアクセスしたり、ダウンロードしたりできませんでした。これについてさらに奇妙なのは、セキュリティ修正プログラムが毎日届き、正しくインストールされることです。sources.list ファイルを消去し、apt-get clean を実行してから apt-get update を実行すると、libboost1.49-dev を含む不足しているすべてのパッケージが戻ってきて、インストール可能な場所にあることがわかりました。これにより、問題が完全に修正されます。したがって、次の 2 つの問題のいずれかが発生します。

また、

  1. あなたのシステムは少し壊れています。このアサーションが正しいかどうかをテストするには、apt-get clean を実行してから apt-get update を実行します。多くのリポジトリ エラーが発生した場合は、問題を解決する方法を知っています。問題のあるリポジトリを削除し、apt-get clean と update を再実行します。
  2. または、xml_parser.hpp を取得するために libboost1.49-dev をインストールしていない場合です。
于 2015-08-13T10:27:36.830 に答える
0

xml_parser.hpp はバージョン 1.41 には存在しないと思います。また、私の debian wheezy 7.x マシンにある 1.49 にも問題があるようです。ブースト 1.55 にあることがわかります。不足しているパッケージを見つけるには、ブースト ファイルシステムの最新バージョンを取得するだけです。

于 2015-08-13T09:30:58.543 に答える