1 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:04:01 ] 過去スレ part 5 pc11.2ch.net/test/read.cgi/tech/1192662575/ part 4 pc11.2ch.net/test/read.cgi/tech/1175663346/ part 3 pc11.2ch.net/test/read.cgi/tech/1158991211/ part 2 pc8.2ch.net/test/read.cgi/tech/1139313234/ part 1 pc8.2ch.net/test/read.cgi/tech/1091198276/ ■関連サイト■ Boost C++ Libraries www.boost.org/ Boost 翻訳プロジェクト boost.cppll.jp/HEAD/ Let's Boost www.kmonos.net/alang/boost/ boost info shinh.skr.jp/boost/
2 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:05:30 ] ■関連書籍■ Boost C++ Libraryプログラミング www.amazon.co.jp/exec/obidos/ASIN/4798007862/ Beyond The C++ Standard Library www.amazon.co.jp/exec/obidos/ASIN/0321133544/ C++ Template Metaprogramming www.amazon.co.jp/exec/obidos/ASIN/0321227255/ The Boost Graph Library www.amazon.co.jp/exec/obidos/ASIN/0201729148/ ■関連スレ■ C++相談室 part61 pc11.2ch.net/test/read.cgi/tech/1205059063/ C++0x 3 pc11.2ch.net/test/read.cgi/tech/1204808027/ 【C++】STL(Standard Template Library)相談室 9 pc11.2ch.net/test/read.cgi/tech/1204045410/
3 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:06:26 ] Loki sourceforge.net/projects/loki-lib/ JTC1/SC22/WG21 - The C++ Standards Committee www.open-std.org/jtc1/sc22/wg21/ POCO, the C++ Portable Components www.appinf.com/poco/info/ sourceforge.net/projects/poco/ The unofficial BCB Boost patches bcbboost.sourceforge.net/
4 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:08:42 ] 乙だけど boobsを語れゴルァ boost::array<part, 6> pc11.2ch.net/test/read.cgi/tech/1207744477/ boobsが気に入らなかったのか
5 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:10:44 ] 検索できなかったから素で立てたに1票。 スレタイ違いは正直致命的だと思うので 立て直しは仕方が無い気がする。
6 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:16:43 ] >boobs 確かにおっぱいは好きだが、タイポは嫌いだしいいんじゃね。
7 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 13:30:28 ] boostを全部ビルドしようと思って bjam --toolset=msvc-9.0 release debug link=static,shared runtime-link=static,shared -sHAVE_ICU=1 -sICU_PATH="C:\Program Files\icu" --prefix="C:\Program Files\boost" install ってしたけどダメだった. runtime-link=static,shared の部分をなくせばコンパイルが始まるんだけど,このオプション指定は外しても問題なし?
8 名前:デフォルトの名無しさん mailto:sage [2008/04/11(金) 19:23:02 ] runtime-link=static,shared こんな風に複数指定できるの? おれはいつもこんな風に指定しているんだけど。 runtime-link=static runtime-link=shared
9 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:06:46 ] そもそもlinkとruntime-linkってどう違うの?
10 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:12:11 ] >>9 まったく別物。 linkは、スタティックリンク(lib)とダイナミックリンク(dll)をビルドするかどうか。 runtime-linkは、CRTのランタイムライブラリをスタティックリンクするか、ダイナミックリンクするかどうか。 例えばVCの場合、runtime-linkをsharedにした場合は、dllも一緒に配布しなければならない。
11 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 16:33:46 ] その場合配布しなければならないdllってMSVCRTのこと? 知らなかった
12 名前:デフォルトの名無しさん [2008/04/15(火) 00:34:17 ] Asioはビルド不要と喜んでいたら、 Systemを使っていた/(^o^)\
13 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 05:37:31 ] チラシの裏! 1.35.0のdarwin.jam読んでユニバーサルバイナリをサクッとビルドする方法がやっとわかった bjam --toolset=darwin architecture=combined address-model=32,64 link=static,shared release debug stage toolset=darwin中?の更にオプションになってるのを、別オプションで--付くと勘違いしてたo..rz ただこれでもfilesystemのdylibはエラー出るけどstaticは問題無さそう、たぶん。
14 名前:デフォルトの名無しさん mailto:sage [2008/04/15(火) 09:00:21 ] >>12 asio良いよな
15 名前:デフォルトの名無しさん [2008/04/18(金) 02:14:33 ] boost::mt19937をつかってクラスを作ったのですが、これをつかうとコンパイル時に以下のワーニングが出ます。 ソースをみたのですが、、、よくわかりませんでした。どなたかワーニングが出る理由を教えてください。 class BMP { public: BMP(unsigned int seed=0) : gen(static_cast<boost::mt19937::result_type>(seed)), dst(0.0, 1.0), rv(gen, dst) {} double operator()() { return rv(); } private: boost::mt19937 gen; boost::normal_distribution<double> dst; boost::variate_generator<boost::mt19937, boost::normal_distribution<double> > rv; }; ワーニングの内容 sample.cpp:51: warning: 'bmp$rv$_dist$_r1' may be used uninitialized in this function sample.cpp:51: warning: 'bmp$rv$_dist$_cached_rho' may be used uninitialized in this function ちなみに51行目は、 BMP bmp; となっていて、これをg++で-O3 -Wallでコンパイルするとワーニングが出ます。でも、-O3をとると出ません。 どうかよろしくお願いします。
16 名前:デフォルトの名無しさん mailto:sage [2008/04/18(金) 09:17:47 ] -O3だと最適化のためにチェック項目が増えるから警告が出るんだな。 警告の内容を読めば判るとおり、初期化前に値を参照している怖れがある。 問題ないプログラムを書いているなら無視してOK。
17 名前:デフォルトの名無しさん [2008/04/18(金) 22:39:28 ] >>16 ありがとう。問題ないプログラムだと思うので、とりあえずこのままでやっときます。
18 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 19:10:24 ] 久々にSVN更新かけてみたら何かspirit関連一斉に変わった?
19 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 19:11:13 ] spirit.v2
20 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 21:12:45 ] v2になったのか! 目玉機能とかあるのかな?
21 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 12:30:39 ] 良く見ていないが以前から計画のあったphoenix統合が実施されてるっぽい?
22 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:05:02 ] boost1.35 を VC++7.1 でビルドしようとしたら LNK1104: コンパイラは、ファイル 'libboost_filesystem-vc71-sgd-1_35.lib' を開くことができません。 と出た.誰か助けて インクルード方法は #include "boost/filesystem/fstream.hpp" で,VC++のオプションでインクルードファイルに c:\..\boost と設定しています
23 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 02:28:29 ] bjam使っとけば
24 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:37:41 ] 今ごろは.libがboostに必要なの?
25 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 16:51:12 ] もしかして「今時は」と「この頃は」が混ざったか?
26 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:10:24 ] リンカオプションも知らずにboostをビルドですか
27 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 17:11:54 ] 「今頃は」という言葉もあると思った >>22 構成プロパティ>リンカ>全般>追加のライブラリディレクトリ に(boostのディレクトリ)\libsを追加 そうすればVC++ではboostがオートリンクしてくれる それはともかくスタティックリンクの仕方も分からず ヘッダのインクルードと混同しているのにboostを使うのは無謀と思うんだが…… まあ並行して学んだ人もいるかもしれないけど あと「boostをビルド」じゃなくて「boostを使ったプロジェクトをビルド」だろう。多分
28 名前:デフォルトの名無しさん mailto:sage [2008/04/29(火) 18:31:31 ] >>27 boostビルドしなきゃライブラリができないじゃないか
29 名前:27 mailto:sage [2008/04/29(火) 18:54:50 ] あ、1.35はWindows用インストーラはまだないのか…… 初心者がbjamなしでわざわざビルドするのはもっと無謀だろ……
30 名前:22 mailto:sage [2008/05/01(木) 08:36:22 ] すみません色々見直したんですが bjam は boost-jam-3.1.16-1-ntx86.zip のものを boost1.35 を VC++7.1 を使用してboostをビルド したつもりだったんですがやはりVCで「boostを使ったプロジェクト」のビルドが出来ません. 「ツール」→「オプション」→「プロジェクト」→「VC++ディレクトリ」で インクルードディレクトリに C:\...\boost\bin.v2 ライブラリファイルディレクトリに C:\...\boost\stage\lib としています. 何がいけないのか自分だけではよくわかりません.どうかご教示いただけないでしょうか?
31 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 09:12:28 ] >>30 まずはそのlibファイルがあるか確認しよう。
32 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 12:04:44 ] bjamのオプションをちゃんと指定しないと 足りないライブラリがあるからねぇ。 1.34.1からオプションが変わってたので、 自分も何度かビルドし直しました。
33 名前:デフォルトの名無しさん mailto:sage [2008/05/01(木) 19:40:22 ] >>30 ttp://www.boost-consulting.com/products/free まずは1.34.1インストーラを使ってみたらいいんじゃないかな?
34 名前:デフォルトの名無しさん mailto:sage [2008/05/02(金) 05:34:02 ] >>22 >>7 と>>8 を夜魅魔症
35 名前:22 mailto:sage [2008/05/03(土) 00:37:26 ] >>31 確認したところ,-sgd- 付きの lib ファイルはありませんでした. 情けないことに指摘されるまでずっとあると思っていました. >>34 シングルスレッド向けlibファイルを作るオプションコマンドを色々な形で実行してみても fail update と出て -sgd- ファイルが作られることはありませんでした. 他にもboostの全てをビルドするしたという方と同じコマンドを実行してもやはりfail updateと出て生成されることはありませんでした. >>33 var1.34.1インストーラを使い,var1.35 とは別に filesystem を生成し,プロジェクトもそれに合わせて設定しなおしたところプロジェクトのビルドはすんなりと通りました. 初めて boost を使うのでもう最新版であることにこだわらず var1.34.1 を使うことにしました. 解決せずに終わることにすっきりしないでもないですが,余裕もないのでこれで質問を終わります. レスしてくれた方々,ありがとうございました.解決せずに〆ることになり申し訳ございません.
36 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 13:15:00 ] 世の中にグラフ構造のデータは沢山あるけど boost.graph を活用している人いますか? ちょっとしたデータなら自分で自前グラフデータ作ったほうがいいのか その辺のしきいってどのあたりなんだろ
37 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:00:59 ] インストーラ版がわけ分からなくて, Let's Boostの指示通りで成功した俺が来ましたよ. Visual Studio 2005 ProのVC++への導入ができました. boost_1_35_0.zipとboost-jam-3.1.16-1-ntx86.zipを入手し, "%VS80COMNTOOLS%vsvars.bat" を実行し, D:\Develop\boost_1_35_0\bjam.exe --toolset=msvc link=static,shared release debug stage を実行しました.VSのパス設定は インクルードファイル:D:\Develop\boost_1_35_0 ライブラリファイル:D:\Develop\boost_1_35_0\stage\lib とし,C++ クックブック レシピ9.12のビルド・実行が成功しました. 補足要求とか,誤解指摘などあればどうぞ.
38 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:14:30 ] というかなんでいまさらになって、Boostのインストールの話ばかりなんだ。 インストールなんて難しくないだろ。 SVNからHEAD引っ張ってきてbjamでビルドするだけだろ。
39 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:22:32 ] 使ってみようっ人がが増えたんだからいいじゃないか。
40 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:35:08 ] >>38 Win32環境だと使ってるコンパイラによって困ったりするのと 一番こまっちゃうのはVSのバージョン複数同時インストールしてるとワケワカメになる事だと思う。 unix系とりあえず自分の使ってるシステムでは問題でなかった。
41 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 19:48:15 ] いや、それほど困るか? 俺はstageディレクトリを作っているが、要するにVSのバージョンに合わせて、 stageディレクトリを複数用意すればいいだけの話だろ。 VSがひとつだけだとしても、32bitコードと64bitコードがあるが。
42 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 21:32:30 ] boost便利なんだけどバイナリサイズが凄い勢いで大きくなってくんだよなぁ
43 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:09:24 ] さっさとC++の標準になってもらいたいもんだな
44 名前:デフォルトの名無しさん mailto:sage [2008/05/03(土) 23:32:34 ] というかlambdaが標準入りで大幅に書き直しを迫られるものが多いかと… さらにtraits→concept。 どちらも下方互換性が失われるわけじゃないから、 boostに留まるならすぐに直す必要はないけど、 標準入りするには必須かと。
45 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 00:18:24 ] VCバージョン違いに加えてstlport使ってると更にややこしい 何とかビルドするのに1週間も掛かってしまったぜ
46 名前:デフォルトの名無しさん mailto:sage [2008/05/04(日) 04:59:13 ] インストーラー出るのいつも遅いけど作るのそんな時間かかるもんかね?
47 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 11:03:59 ] 最近のboostは ./configure make checkinstall (以前のバージョンだとここでこけた) できるな。
48 名前:デフォルトの名無しさん mailto:sage [2008/05/10(土) 13:45:05 ] >36 Boost Graph はグラフデータを表す方がメインじゃなくて、汎用的に使えるグラフ上のアルゴリズムの方がメインだと思う。 自前でグラフデータ作るなら Boost Graph に渡せるようにしとくと便利、みたいな。 ちょっとしたデータの方こそ adjacency_list とか使ってさくっと済ませて、速度なり機能なり必要な要件があるなら それに適したデータを作るなり、アダプタ書くなりする方がいいんじゃないかと思う。
49 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:51:55 ] .hpp がきもちわるくて Boost つかってない なんだよ Header++ って。ヘッダ仕様自体は変わってないつーのwwww
50 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:52:51 ] そうかそうか
51 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 17:52:59 ] 中身がCなヘッダとC++なヘッダを区別したいお と思ったことが一回ぐらいない?
52 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:58:05 ] .hpp って読むときどうしてもドットフププって読んじゃうんだよね。
53 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 19:12:19 ] >>49 でもこの分野、既存の用語の「反対の意味」とか「○○バージョン」を意味したいだけの造語、 結構多いでしょ。 ソフトウェアだって、単にハードウェアとの対比で生まれただけで、別に ソフトウェアの何かがsoftだからそう呼ばれるようになったわけじゃないし。
54 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 23:41:02 ] そもそもBoostのヘッダの拡張子が.hだったとしても、 どうせ49は別の難癖付けてBoostを使わないと思う。 はっきりとBoost使ったコードはきもいから嫌だとか 正々堂々と言うほうがかえってすっきりした気分になれる、たぶんお互いに。
55 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:00:57 ] 大体、拡張子が気に入らないから使わないとかおかしいだろw
56 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 00:17:00 ] 標準ライブラリは拡張子が無いので使いませんw
57 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 03:46:35 ] hppって昔からあるような
58 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 04:34:00 ] hppもHもhhもhxxもh++も大昔から普通にあります。 ただ>>49 が誰かに構ってほしかっただけです。 気にしないで下さい。
59 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 13:47:23 ] うざ
60 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 14:00:36 ] .cxxって何だよw と思ったことならある
61 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 14:06:30 ] >>60 xx が ++ を英字で模倣したものだと気付くのに時間かかった。 Makefile とかは大文字で普通に使ってるから余計わかりにくい。
62 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:23:27 ] C++コードからしか使われないヘッダの拡張子は .h を使わないで欲しい Cからも使えるヘッダなら .h でいいけど
63 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 17:32:07 ] boostベースの数値計算library opentissue が便利
64 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:25:23 ] CとC++の区別が付かない人がいるのか そんな人がCとC++を使ったら「CっぽいC++」と「C++」を書くんだろうな
65 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 06:56:22 ] 逆だろ。CとCっぽいC++じゃね。
66 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 08:13:29 ] ビャーンの本では .h を使ってるという理由だけで .h を使ってる。 boostのfaqに書いてある理由も理解できるので、別に .hpp に嫌悪感を抱くこともない 拡張子ネタとは関係ないけど、いくらビャーンの本で推奨されてもさすがにプログラミング環境でプロポーショナルフォントを使うのはナイ
67 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 08:19:58 ] そうか? 普通にプロポーショナルフォントを使っているが。
68 名前:デフォルトの名無しさん [2008/05/13(火) 10:51:26 ] boost::formatに関する質問です。 Boost1.3.4.1を使用しているのですが、formatのparseメソッド(※)は使わない方がいいのでしょうか? ※宣言部分のコメントには「resets buffers and parse a new format string」とあり、コンストラクタでコールされています。 動作ですが、 boost::format fmt( "abcd %1$s" ); fmt % 1; std::cout << fmt << std::endl; fmt.parse( "efgh %1$s" ); fmt % 2; std::cout << fmt << std::endl; とすると出力が abcd 1 2 となってしまいます。
69 名前:デフォルトの名無しさん [2008/05/13(火) 10:52:22 ] (続き) 一応、 @.\boost\format\parsing.hpp の400行目(parseメソッドの最初)に clear(); を追加。 A.\boost\format\format_implementation.hpp の行目(clearメソッドの最初)に prefix_.resize(0); を追加。 とすることで abcd 1 efgh 2 と出力されるようになるのですが、この修正だけで問題ないのか心配です。 (ちなみに1.3.5.0のソースもDLして確認してみましたが、該当するような処理はありませんでした。) まぁそもそもformatオブジェクトを使いまわしたところで大してパフォーマンス上がるわけではないんですがw 宜しく御願いします。
70 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:07:22 ] lambdaでPOD型扱うのに記述がめんどいんで #define mem_of_1(Type, MemberName) (&_1->*&Type::MemberName) #define mem_of_2(Type, MemberName) (&_2->*&Type::MemberName) みたいにして使ってるんだが、こういうの標準でも定義してもらえないものか・・・ オレ定義だと可搬性に欠けるのが難点で。
71 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:13:16 ] >>64 何か線を引きたいようだけど C++ コンパイラで便利な C という位置づけもあるんじゃないか。 抽象化にこだわって変なソース書く人もいるわけだろ? ようはスマートに処理をこなせるかということではないかな。
72 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:13:23 ] >>66-67 できればプロポーショナルフォントを使いたいが、 そこら辺のフォントだとプログラミングには使いづらい。 ピリオドやカンマ、セミコロンが小さすぎる。ゼロには斜線が欲しい。 どこかプログラマのためのプロポーショナルフォントなんて出してくれないものか。
73 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 15:49:38 ] >>70 boost-devel ML にコード投稿したら 多分とりこんでもらえる
74 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 17:15:20 ] >>70 ttp://www.boost.org/doc/libs/1_35_0/doc/html/lambda/le_in_details.html#lambda.members_variables_as_targets でがまんしる
75 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 18:11:19 ] >>72 VC6とかに入ってるFONTEDITで自分で作ればいい。 90文字程度作ればあとはフォントリンクして終わりだから簡単だぞ。
76 名前:75 mailto:sage [2008/05/13(火) 18:32:39 ] ごめん、Win環境限定ならね。
77 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:02:53 ] プロポーショナルフォントでプログラムに困るようなうんこ環境は Windows だけなので問題ない。
78 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 21:23:30 ] つまんね
79 名前:デフォルトの名無しさん mailto:sage [2008/05/14(水) 07:18:51 ] >>71 CっぽくてもC++で作られたライブラリはCじゃ使えないから線引きは必要だ
80 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 09:47:56 ] Emacs使いな人、もしいたらこれでboost使っても 補完が働くか試してみないか? ttp://cedet.sourceforge.net/intellisense.shtml
81 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 17:37:45 ] #include <boost/array.hpp> #include <boost/serialization/serialization.hpp> struct S { boost::array<int, 3> data; private: friend class boost::serialization::access; template<class Archive> void serialize(Archive& ar, unsigned int ver) { ar & data.c_array(); } }; ttp://hw001.gate01.com/eggplant/tcf/cpp/boost_serialization.html#array ここを見て、boost::array.c_array()で生の配列を取り出してシリアライズしようと思ったのですが、 error C2679: 二項演算子 '&' : 型 'int *' の右オペランドを扱う演算子が見つかりません (または変換できません)。 というエラーが出てしまいました。 どうやればシリアライズできますか?
82 名前:デフォルトの名無しさん mailto:sage [2008/05/19(月) 20:56:44 ] ar & data.elems;でどうよ。
83 名前:81 mailto:sage [2008/05/20(火) 13:03:27 ] >>82 thx コンパイル通りました。 データがpublicに置いてあるとは盲点でした。 連続で申し訳ないですが、もう1つ質問させて下さい。 Let's Boostで解説されているフルインストールをしたんですが、 ライブラリを必要とするboostを使ったものをビルドするとリンクエラーが出てしまいます。 例えば、 ttp://www.kmonos.net/alang/boost/classes/serialization.html このサンプルをビルドすると、 a.obj : error LNK2001: 外部シンボル ""protected: __thiscall boost::archive::basic_text_iprimitive<class std::basic_istream<char,struct std::char_traits<char> > > ::~basic_text_iprimitive<class std::basic_istream<char,struct std::char_traits<char> > >(void)" (??1?$basic_text_iprimitive@V?$basic_istream@DU?$char_traits@D@std@@@std@@@archive@boost@@IAE@XZ)" は未解決です。 といったa.objでのerror LNK2001が7個(a.objはサンプルソースをコピペした.cpp) libboost_serialization-vc80-mt-gd-1_34_1.lib(basic_serializer_map.obj) : error LNK2001: 外部シンボル ""__declspec(dllimport) public: __thiscall std::_Container_base::~_Container_base(void)" (__imp_??1_Container_base@std@@QAE@XZ)" は未解決です。 といったlibboost_serialization-vc80-mt-gd-1_34_1.libでのerror LNK2001が12個出ます。 libboost_serialization-vc80-mt-gd-1_34_1.libでエラーが出るということは、 ライブラリへのパスが通ってないわけじゃないと思うんですが、原因はどこにあるのでしょうか?
84 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 19:38:03 ] CRTの設定(静的LIBかDLLか)が食い違っているとそんなエラーが出た気がする。
85 名前:デフォルトの名無しさん mailto:sage [2008/05/20(火) 20:38:55 ] VC2008でビルドするためのパッチを当てる必要があるかもしれない気がする。
86 名前:83 mailto:sage [2008/05/21(水) 08:34:22 ] >>84 いろいろ変えてみたら、/MTでlibboost_serialization-vc80-mt-gd-1_34_1.libでのエラーが消えましたが、 a.objでのエラー7個が残ったままです。 >>85 すみません、詳しくお願いします。 環境はVC2008EEです(書き忘れてましたすみません)。
87 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 08:39:25 ] >>86 www.nabble.com/Preliminary-0.9.0-tarballs---VC++-2008-Express-td14142470.html
88 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:41:54 ] >>80 たしか設定済みmeadowに入ってたよね meadowとVisual Studio組み合わせられると便利なんだけどね
89 名前:83 mailto:sage [2008/05/21(水) 14:38:36 ] thx よく理解しないまま、 www.nabble.com/Re%3A-Preliminary-0.9.0-tarballs---VC%2B%2B-2008-Express-p14161224.html に書かれているコードをそれぞれのファイルの末尾に追加してみました。 そして、例のサンプルをビルドしたらエラーは、 C:\Library\boost_1_34_1\boost/config/compiler/visualc.hpp(180) : fatal error C1189: #error : "Compiler not supported or configured - please reconfigure" の1つになりました。 うーん、自分の知識が足りないか・・・。
90 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 16:51:34 ] >>89 おそらくVC8の設定でライブラリをビルドしてしまっているから VC9EEの設定で構築しなおす必要がある。 そのURLに載っているファイル4つを編集してbjam --toolset=msvc-9.0すればいい。 >ファイルの末尾に追加 差分の見方がわからないならdiff unifiedでぐぐれ つーか1_35_0使えばいいんじゃないのか?
91 名前:83 mailto:sage [2008/05/21(水) 21:10:39 ] >>90 1_35_0を入れたら、すんなりビルドできました。 最新版を確認するべきだったorz ありがとうございました。
92 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 14:55:48 ] BGLを使い始めたのですが、adjacency_listについて質問があります。 adjacent_vertices()は、adjacency_iteratorのpairを返すのですが、 このイテレータはSTLのRandomAccessIterator要件を満たすと ドキュメントに書いてあるのですが、以下のコードのように イテレータに加算すると、コンパイルが通りません。 これは、私のコードに問題があるのでしょうか? // VertexProp, EdgePropは適当に定義 typedef adjacency_list<setS, vecS, undirectedS, VertexProp, EdgeProp> Graph; Graph G; // Gに頂点やエッジを追加してグラフを作成 // vはGの1頂点で、隣接する頂点は複数個存在 tie(ai, ae) = adjacent_vertices(v, G); vertex(*(ai+1), G); // コンパイルエラー ちなみに、環境は以下の通りです。 boost: 1.34.1 コンパイラ: GCC 4.2.3
93 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 18:20:21 ] >このイテレータはSTLのRandomAccessIterator要件を満たす どこに書いてあります? OutEdgeList を setS で設定しているので, RandomAccessIterator の要件は満たさないと思いますよ.
94 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 09:06:16 ] >>93 www.boost.org/doc/libs/1_35_0/libs/graph/doc/adjacency_iterator.html のMEMBERS OFの項に、 The adjacency iterator type implements the member functions and operators required of the Random Access Iterator concept, except that the reference type is the same as the value_type so operator*() returns by-value. と記述があるのです。この説明はadjacency_iterator_generator::typeに ついてのものだと思っていたのですが、勘違いでしょうか? もう一度ドキュメントを読み返してみたら、MODEL OFの項に The adjacency iterator adaptor (the type adjacency_iterator_generator<...>::type) is a model of Multi-Pass Input Iterator . と記述されていました。これならば、operator+()が定義されていなくても 当然なのですが、ちょっと混乱しています。
95 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 10:13:04 ] >>94 adjacency iterator adaptor は out edge iterator を adapt して operator* の動作を edge の target を返す動作に書き換えるだけだと思います. なのでそのドキュメントは間違っているのではないかと思います. adjacency iterator adaptor はベースになっている out edge iterator が -Multi-Pass Input Iterator なら Multi-Pass Input Iterator -Forward Iterator なら Forward Iterator -(ry という具合に,単にベースの out edge iterator が どの concept の model かを投影するだけ,というのが正しいのではないかと.
96 名前:95 mailto:sage [2008/05/25(日) 10:14:21 ] >>94 それから adjacency_list の adjacency_iterator は 別に adjacency_iterator_adaptor で実装されているとは限らないので, 読むべきドキュメントは adjacency_iterator_adaptor のドキュメントではなくて あくまで adjacency_list のドキュメントかと思います. ただ, adjacency_list において adjacency_iterator と out_edge_iterator が どの iterator concept のモデルなのかの関係については, ↑の議論が踏襲されるのが自然とは思います. そして現に, Adjacency List のドキュメント www.boost.org/doc/libs/1_35_0/libs/graph/doc/adjacency_list.html では, "The adjacency_iterator models the same iterator concept as out_edge_iterator. " と 書いてあります.
97 名前:95 mailto:sage [2008/05/25(日) 10:20:15 ] なので結論としては, >>92 で adjacency_list の OutEdgeList テンプレートパラメタに setS を指定しているので, out_edge_iterator は Bidirectional Iterator concept のモデルになり, 従って adjacency_iterator も Bidirectional Iterator concept のモデルなので, >>92 のランダムアクセスではコンパイルが通らないのだと思います.
98 名前:92 mailto:sage [2008/05/25(日) 13:45:24 ] 詳細にわたって解説していただきありがとうございます。おっしゃる通り、 まずadjacency_listの解説をよく読むべきでした。 OutEdgeListにsetSを使っているのは、エッジの重複を許したくないと いうのが理由でした。グラフを読み込む際にエッジの重複をチェック するようにして、OutEdgeListにはRandomAccessIteratorにするように すればいいのかとも思いますが、そうするとエッジに対する各操作の 時間複雑度も変わってきてしまい、なかなか悩みどころですね。 よく考えてアルゴリズムを実装します。
99 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:38:48 ] なんか最近の.NETの中身見てると、Boostが隠ぺいされてそうな雰囲気がするな
100 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:44:17 ] 時代がBoostに追い付いてきたって事か