• ベストアンサー

boostを利用したプログラムのコンパイルでエラー

boostを初めて利用しようと思い、ファイルをダウンロードして、bjamを使ってインストールしました。そして以下のようなテスト用のプログラムを作成しました。 #include <boost/tokenizer.hpp> using namespace boost; int main(void) {   char_separator<char> sep(" \t\n");   tokenizer<char_separator<char> > tokens("aaa bbb ccc", sep);   return 0; } これをbcc32によりコンパイルすると、以下のようなエラーがいくつか発生してコンパイルができませんでした。 エラー E2489 c:\borland\bcc55\include\boost-1_33_1\boost/mpl/aux_/integral_wrapper.hpp 45: オプションコンテキスト応答深度の上限を超過: 再帰をチェックしてください なぜ、このようなエラーが出るのでしょうか。ちなみに、cygwin+gccではコンパイルおよび実行が可能でした。 ご存じの方がいらっしゃったらよろしくお願いします。(WinXPです)

  • kary
  • お礼率95% (82/86)

質問者が選んだベストアンサー

  • ベストアンサー
  • MrBan
  • ベストアンサー率53% (331/615)
回答No.3

BCC5.6.4 は、Borland C++ BuilderX という、これも個人なら無償で使えるIDEについてました。 残念ながら、Borland さんの方針転換で現在ダウンロードはできなくなってしまいましたが、書籍などに付いているものがあれば、これが利用可能です。 # 今では、無償で VS2005EE や VC2003TK があるので、こちらの方がお勧めといえばお勧めですが。

参考URL:
http://www.borland.com/products/downloads/download_cbuilderx.html
kary
質問者

お礼

ご回答ありがとうございます。教えていただきましたvc8でコンパイルが通りました。

その他の回答 (2)

回答No.2

>\boost/mpl/aux_/integral_wrapper.hpp 45: オプションコンテキスト応答深度の上限を超過: 再帰をチェックしてください 表記のとおりコンパイラがmplの再帰(自分自身を呼び出す) にたえられないようです。 公式テストによると BCC-5.5.1はBoost 1.30.2までです

参考URL:
http://engineering.meta-comm.com/boost.aspx
kary
質問者

お礼

ご回答ありがとうございます。とりあえず、boostはvc8で利用しようと思います。

回答No.1

 bcc5.5.1ですか?  単純にコンパイラの限界を超えてしまったのでしょう。 http://www.google.com/search?num=50&hl=ja&q=%E5%BF%9C%E7%AD%94%E6%B7%B1%E5%BA%A6%E3%81%AE%E4%B8%8A%E9%99%90+boost&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=lang_ja  公式ページによると bcc5.6.4/5.8.1は大丈夫のようです。

参考URL:
http://engineering.meta-comm.com/boost-regression/CVS-HEAD/developer/tokenizer.html
kary
質問者

お礼

ご回答ありがとうございます。bcc5.6.4/5.8.1は手元にないので、とりあえずboostはvc8で利用しようと思います。

関連するQ&A

  • C++のboostのtokenizerのエラー

    現在C++でboostを使用して、テキストファイルから読み込んだ1行分のテキストをtokenizerでセパレーションして、文字列を編集したいと考えています。 それで、次のようなプログラムを作成しました。 char_separator<char> sep(" "); tokenizer< char_separator<char> > tokens( record, sep ); typedef tokenizer< char_separator<char> >::iterator Iter; for( Iter it=tokens.begin(); it!=tokens.end(); ++it ) record = *it + ","; 1行分の文字列は”record”に入っています。 最初に”---------------------------------------------------”という文字列が読み込まれて、このプログラムでは正常に処理されて、 ”---------------------------------------------------”で変化はありませんがrecordに正常に格納されます。 しかし、次の行の”001. リモート, 2012/06/12 09:15:49”というのを読み込んだ際に、for文でカンマで区切られた文字列をrecordに格納する際にエラーが出てデバッグが中断してしまいました。 このようなプログラムでの問題点と解決方法を教えて頂けないでしょうか。 どうぞ、よろしくお願いします。

  • boost::serializationについて

    次のコードがテンプレート辺りでコンパイルできません #include <list> #include <array> #include <fstream> #include <boost/serialization/serialization.hpp> #include <boost/serialization/array.hpp> #include <boost/serialization/list.hpp> #include <boost/archive/binary_iarchive.hpp> #include <boost/archive/binary_oarchive.hpp> std::list<std::array<bool, 3>> lab; std::array<bool, 3> pusharray; pusharray[0] = true; pusharray[1] = false; pusharray[2] = true; lab.push_back(pusharray); lab.push_back(pusharray); std::ofstream ofs("test"); boost::archive::binary_oarchive boa(ofs); boa << lab; ofs.close(); std::ifstream ifs("test"); boost::archive::binary_iarchive bia(ifs); bia >> lab; ifs.close(); エラーメッセージ: c:\program files\microsoft visual studio 10.0\vc\include\boost\archive\basic_binary_iprimitive.hpp(181): warning C4244: '引数' : 'std::streamsize' から 'size_t' への変換です。データが失われる可能性があります。 c:\program files\microsoft visual studio 10.0\vc\include\boost\archive\basic_binary_iprimitive.hpp(152): クラス テンプレート のメンバー関数 'void boost::archive::basic_binary_iprimitive<Archive,Elem,Tr>::load_binary(void *,size_t)' のコンパイル中 with [ Archive=boost::archive::naked_binary_iarchive, Elem=char, Tr=std::char_traits<char> ] c:\program files\microsoft visual studio 10.0\vc\include\boost\archive\detail\iserializer.hpp(362) : コンパイルされたクラスの テンプレート のインスタンス化 'void boost::archive::load_access::load_primitive<Archive,T>(Archive &,T &)' の参照を確認してください with [ Archive=boost::archive::naked_binary_iarchive, T=boost::archive::object_id_type ] (略) そもそもSTLコンテナのネストはserializeできないのでしょうか それともヘッダが足りないのでしょうか

  • Cygwin boost

    Windows XP sp2 + Cygwin の C++ で正規表現を使いたく setup.exe で boost をインストールし、以下のコードをコンパイル($g++ regextest.cpp) したのですがエラーが出てしまいました。 コード: #include <boost/regex.hpp> #include <iostream> using namespace std; int main () { string str("Free Programming For Windows."); boost::regex reg("Free.+Windows\\."); if (boost::regex_match(str, reg)) { cout << "===> Matched." << endl; } else { cout << "===> Not matched." << endl; } return 0; } エラー: regextest.cpp:1:27: boost/regex.hpp: No such file or directory パスが通っていないようなのですが、どうしたらよいか分かりません。アドバイスいただけたら嬉しいです。 usr/include/boost-1_33_1 に boost/regex.hpp は確認できました。

  • boost::archive::xml_oarchiveについて

    boostのコンパイルが通りません。調べられるだけ調べたのですが、原因として表示されるmake_nvpを利用しても、boost::STATIC_ASSERTION_FAILUREが発生します。わかる方ご教授お願いします。 #define BOOST_LIB_NAME boost_serialization #include <boost/config/auto_link.hpp> #include <boost/serialization/string.hpp> #include <boost/serialization/access.hpp> #include <boost/serialization/nvp.hpp> #include <boost/archive/xml_oarchive.hpp> #include <fstream> class FooData { private: int Data; friend class boost::serialization::access; template <class Archive> void serialization(Archive& ar, const unsigned int version) { ar & boost::serialization::make_nvp("Data",Data) } }; void main(void) { FooData data; //アーカイブ作成 std::ofstream ofs("output.txt"); boost::archive::xml_oarchive oa(ofs); // ファイル書き出し oa << (const FooData&)data; ofs.close(); }

  • boost::regexで、日本語に利用ついて

    boost_1_47を利用して、置換を行おうとしているのですが、「VIII」を置換しようとするとエラーになります。たぶん「5B」が入っているからかと思うのですが、どのように対処したらよいのでしょうか? #include <boost/regex.hpp> using namespace std; using namespace boost; const boost::regex str("VIII"); よろしくお願いします。

  • xpressive.hpp をオープンできない

    現在、code gear c++ builder 2009 でboostに関するプログラムを勉強してます。 正規表現のプログラムをやってみたくて、インクルードファイルとして、 #include <boost/xpressive/xpressive.hpp> こちらを宣言したのですが、次のようなエラーが出てきました。 [BCC32 エラー] test_boost.cpp(12): E2209 インクルード ファイル 'boost/xpressive/xpressive.hpp' をオープンできない [BCC32 エラー] test_boost.cpp(14): E2316 'xpressive' は 'boost' のメンバではない [BCC32 エラー] test_boost.cpp(14): E2282 名前空間名が必要 このようなエラーが出てくるのですが、これを解決する方法はないでしょうか? どうぞ、ご教授の程よろしくお願い致します。

  • VC++ 2015 boostの使用について

    当方の環境は、 windows 7 visual studio community 2015 Eドライブ直下にboostフォルダあり です。 こちらのサイトのサンプルを実行したいのですが、boostの導入に手間取っています。 http://sfpgmr.hatenablog.jp/entry/wasapi-%E6%8E%92%E4%BB%96%E3%83%A2%E3%83%BC%E3%83%89%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%EF%BC%88%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%A2%E3%83%BC%E3%83%89%EF%BC%89 ここ(http://rexpit.blog29.fc2.com/blog-entry-89.html)を参考にboostのビルドまでは完了したと思います。 プロジェクトのプロパティページから 構成プロパティ→VC++ディレクトリで インクルードディレクトリに E:\boost ライブラリディレクトリに E:\boost\stage\lib を追加して実行しても「ソースファイルを開けません"cstdint.hpp"」などのエラーが出ます。 サンプルの#include <boost/cstdint.hpp>を#include <cstdint.hpp>に変更するなど試してみましたが同様でした。 どなたか正しい設定をご教授いただけると幸いです。

  • コンパイルエラー

    本日からC++を勉強しはじめました。 使用しているコンパイラはBORLAND C++ COMPILER 5.5 です。 #include<iostream> int main(){ cout<<"hello"; return 0; } 上記をコンパイルすると下記のエラーが出ます。 いったいどこがいけないのでしょうか。 どなたか教えてくださいませ。 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland 123.c: 致命的エラー F1003 C:\BORLAND\BCC55\include\stdcomp.h 5: error 指令: Must use C++ for STDCOMP.H *** 1 errors in Compile *** *** コンパイル終了 ***

  • c++でプログラムを作っています。初心者です。

    c++でプログラムを作っています。初心者です。 「DateUtils.hpp」というものを使いたく、 #include <DateUtils.hpp> と先頭に書いたのですが、コンパイルエラーで fatal error C1083: include ファイルを開けません。'DateUtils.hpp': No such file or directory と表示されます。 「DateUtils.hpp」というものはどこかから調達しないといけないのでしょうか? あるいは #include の書き方にでも問題があるのでしょうか… 「DateUtils.hpp」を使えるようにする方法を教えてください。 開発環境などは… ・OSはWindows Vista ・Visual C++ 2010 Expressを使用 ・dllを作成中 といった感じです。よろしくお願いします。

  • boost::formatの値をstring型にコピーしたい

    boost::formatの値をstring型にコピーしたいのですが、うまくいきません。boost自体初めてで以下のサイトからダウンロードし、展開後VS2005のVCのインクルードフォルダーにboostフォルダーをまるまるコピーしただけですが・・・ http://sourceforge.net/project/showfiles.php?group_id=7586 boost 1.34.1 #include <iostream> #include <boost/format.hpp> using namespace std; using boost::format; void main(){ double x = 1.234; string str("abc"); //cout << format("%10.3f, [%16s]") % x % str << endl; // サンプルはこうでした。 // いったんstring型に入れて表示させたい。 string y; y = boost::format("%10.3f, [%16s]") % x % str; // エラー箇所 std::cout << y << std::endl; }