1 名前:BOOTS [2007/10/18(木) 08:09:35 ] 語って.はぁと part boost::mpl::int_<5> 過去スレ 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/
63 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:21:20 ] そこはだがそれがいいと返すべき
64 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:23:27 ] 全部言語仕様に入れたプログラミング言語作ろうぜ。 俺は見てるから。
65 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:23:54 ] Java厨乙が適切だと思う。そういう俺はD言語厨。
66 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:25:38 ] どんなにいいライブラリがあっても使いこなせない低脳さん乙と言ってあげるべき
67 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:26:08 ] MFCが基本と言ってる時点で(ry
68 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:29:11 ] 大体基本って何だよ。 MFCはライブラリで、CLIは実行環境ジャン。
69 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:48:17 ] 最近プロテインをプロティン(どちらかというとプロチン)と発音しているCMを見たんだけどこれって正しい?
70 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 14:48:25 ] 俺は凡人だから、ちょっと頑張れば>>60 が挙げたようなものは片っ端から使えるけど、 並外れて悪い頭を持って生まれてきた人には厳しいかもね。
71 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:17:29 ] ここはいい釣堀ですね
72 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:23:36 ] ↑はいはーい、いつもの「カレ」のご登場でーす。パチパチ
73 名前:デフォルトの名無しさん mailto:sage [2007/11/23(金) 15:35:05 ] 恥かいた時のために、いつでも釣り竿を用意してます 「あ、ヤバ!」と思った時、どれだけ自然に「さっきから竿を構えていた」かのように振る舞えるかがコツ
74 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 03:07:55 ] >>73 後から釣りでしたって言った奴の負けだと思いますぅ〜♪
75 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 04:46:35 ] 相手して付き合ってしまってる時点で負けだろ わざわざ同じレベルに堕ちる必要はあるまいて
76 名前:デフォルトの名無しさん mailto:sage [2007/11/24(土) 15:52:12 ] >>75 おまえもな
77 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:16:34 ] おまえら、しょうがないなぁ unit nYakuso = 7; //薬草1個の値段 unit nFukuro[10]; //持ち物を入れる袋 wstring strIppai(L"持ち物が\nいっぱいです><") ; という文字列を以下のように変換するプログラムを30秒以内で記述できるか? unit、nYakuso、=、7、;、unit、nFukuro、[、10、]、;、wstring、strIppai、 (、L、"、持ち物が\nいっぱいです><、"、)、;
78 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:39:14 ] 変数名の前に n とか str とか、自分は低脳ですって言ってるようなもんですよ
79 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:43:33 ] こういうのはperlとか使った方がよさそう
80 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 17:55:10 ] >>77 //以下の文字列を無視するのと クォーテーション文字で囲まれた文字列内で エスケープ文字を無視するのは標準Boostでは無理。
81 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:02:10 ] spiritなら頑張れるかも 30秒以内は無理そうだが xpressiveは知らない
82 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 18:26:59 ] ノcomment_p( )
83 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 19:04:27 ] >>82 だな
84 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 05:43:59 ] 30秒以内に記述してもコンパイルに30秒以上かかるんだよ・・・・
85 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 14:51:55 ] boost.pythonでboostとpythonのバージョン違いに悩まされるより swigの方がいいと思った swigと比べたboost.pythonの利点って何?
86 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 17:25:04 ] python コード呼び出すのがらくなことじゃねーの?
87 名前:デフォルトの名無しさん [2007/11/26(月) 18:27:45 ] cmathの関数群とbindについて教えてください。 double x = 25; cout << bind(sqrt, _1)(x) << endl; このコードは、VC++2005では実行できるのですが、 g++ 4.0.0 (boost 1.34) だと以下のように明示的に キャストしないとコンパイルできません。 cout << bind(static_cast<double (*)double>(sqrt), _1)(x) << endl; これはg++用boostライブラリ固有の制限なんでしょうか?
88 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:44:44 ] std::cout << boost::bind<double>(&std::sqrt,_1)(x) << std::endl; bindがオーバーロード解決に失敗するときは戻り値の型をテンプレート引数で明示的に指定してやればいいらしいです
89 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:48:02 ] あごめん、やっぱ無理っぽい
90 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 18:49:07 ] >>87 もしかしたら、VCにはcmathのfloat版関数の宣言がないのではないか?
91 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 19:30:10 ] >>88 >>89 >>90 レスありがとうございます。 やはり複数の関数定義があるからなんでしょうかね。 実行はできるので、実装を受け入れることにします。
92 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 22:39:40 ] template特殊化じゃなくて、overloadだとね。 template<typename _Tp> inline _Tp mysqrt(_Tp __x) { return sqrt(__x); } なら、 cout << bind(mysqrt<double>, _1)(x) << endl; できるけど。doubleで特殊化されてようとされてなかろうと。
93 名前:デフォルトの名無しさん mailto:sage [2007/11/27(火) 01:46:48 ] ただオーバーロードの名前解決ルールに従うとビッチリdoubleを 指定してるわけだからdouble sqrt(double)を特定できる はずなんですけどね。コンパイルエラーにもambiguousとは出ていない ようですし。
94 名前:デフォルトの名無しさん mailto:sage [2007/11/28(水) 23:07:10 ] >93 double を指定しているのは戻り値の型であって、sqrt() の引数の型には寄与してないから特定できないんじゃない? x の型は bind の解釈には無関係だよね?
95 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 00:58:51 ] >>94 _1 は確か引数じゃないかな?戻り値ではないと思ったけど。
96 名前:デフォルトの名無しさん [2007/11/29(木) 03:42:26 ] xpressiveを勉強しているのですがa|b(aまたはb)がうまく動きません using namespace boost::xpressive; sregex tok = as_xpr("hoge") >> (("!">>~before(eos)) | ("!!">>~before(eos)) | eos); smatch m; const std::string addr("hoge!hoge!!hoge!"); std::string::const_iterator it = addr.begin(), end = addr.end(); for( ; regex_search(it, end, m, tok, regex_constants::match_continuous) ; it = m[0].second ) { std::cout << m[0] << std::endl; } このコードで hoge! hoge!! hoge! と出力されると思ったのですが hoge! hoge! で終わってしまいます
97 名前:96 [2007/11/29(木) 03:46:41 ] 申し訳ございません 間違えました 検証に使った文字列は const std::string addr("hoge!hoge!!hoge"); です
98 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 10:35:19 ] sregex tok = as_xpr("hoge") >> (("!!">>~before(eos)) | ("!">>~before(eos)) | eos); だろ。普通は
99 名前:デフォルトの名無しさん [2007/11/29(木) 12:35:47 ] ファンクたを合成したいんだけど、 compose_f_gx_hx とかって Visual C++ 2005 の STL には入ってないの? ファンクタの合成って boost::compose か何かが必須? なんか俺勘違いしてるのかな。
100 名前:99 [2007/11/29(木) 12:38:12 ] あれ?Boost.Compose って deprecated ?
101 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:40:01 ] lambda::bindを使って bind(&f, bind(&g, _1)) な風に でも>>13 のように呼び出し規約が__stdcallの関数については使えないようだ mlには使えるって書いてあるんだけどねぇ・・・誰か使えた人いないのかなぁ
102 名前:99 [2007/11/29(木) 12:48:31 ] #include <boost/lambda/bind.hpp> boost::lambda::bind #include <boost/bind.hpp> boost::bind どちらを使うべきなのでしょうか?
103 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 12:53:19 ] 合成関数目的ならどっちでもいけるけど __stdcallのものにでも使えるという点でboost::bindかな・・・
104 名前:99 [2007/11/29(木) 12:56:54 ] THX. ところで、ファンクタの合成って標準のSTLには入ってないよね? SGIのだけに入ってるとか、そういうことあるのかな? 少なくとも Visual C++ だと compose_f_gx_hx などはありませんでした。 boost::bind のほうがもっと柔軟だから compose_f_gx_hx いらないけど。
105 名前:デフォルトの名無しさん mailto:sage [2007/11/29(木) 22:56:21 ] >104 標準化される前の SGI STL には compose1, compose2 があった。っていうか今もある。 現行の標準規格には入っていない。 compose_f_gx_hx は Boost.Compose での名前。 C++0x では Bind が標準に入るので今後は bind 使えになると思われ。
106 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 02:01:44 ] Scott Meyers' Effective C++: TR1 Information www.aristeia.com/EC3E/TR1_info_frames.html 266 tr1::bind Function Object Binders n1455
107 名前:99 [2007/11/30(金) 15:00:08 ] _1 とか _2 って boost::lambda 名前空間以下にしかないよね? boost::bind も併用しているんだけど、 そうすると ambiguous って言われる?
108 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 15:12:46 ] 言われる
109 名前:99 mailto:sage [2007/11/30(金) 15:15:54 ] だは〜 無名名前空間の下に見えてる _1 はどっから来たものか・・・ #include <boost/bind.hpp> だろうなぁ。 ::_1 って指定してやらないとダメみたい。
110 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 18:50:17 ] Visual C++ 2008 Express Edition だとさらに 果敢に IntelliSense が攻めてくれるね. だけどまた boost をリビルドしなきゃならんのか… 今からやろうと思うんだけど, svn trunk から とってきたのを直接ビルドしてみようと思う.無謀?
111 名前:110 mailto:sage [2007/12/02(日) 18:58:00 ] svn.boost.org/svn/boost/trunk/boost/config/auto_link.hpp #elif defined(BOOST_MSVC) && (BOOST_MSVC >= 1500) # define BOOST_LIB_TOOLSET "vc90" ってことは,すでに trunk では対応しているのか. 退行テストも通ってるのかな.しかし svn から export して持ってきたものをどうやってビルドするのかわからん・・
112 名前:110 mailto:sage [2007/12/02(日) 19:24:56 ] bjam ビルド中。 あっさり toolset 名として vc9 が検出されたみたい。 つーか、bjam をビルドしようとして build_dist.bat を 実行したらすでに本体のビルドまで勝手にやってくれているのだが・・・ 以前ビルドしたときとは大違いに楽になってる気がする。
113 名前:110のチラシの裏 mailto:sage [2007/12/02(日) 19:31:29 ] ごめん、ウソ。いま改めて bjam.exe --build-dir=builddir --toolset=msvc-vc9express stage やってます。Express Edition は固有の toolset 名を持ってるのか? もしかして 64 ビット版のライブラリをビルドするか否かを決定してる?
114 名前:110のチラシの裏 [2007/12/02(日) 19:37:30 ] しかし Graph とか正規表現ライブラリの Unicode サポートとか 使おうと思ったら expat や icu4c も vc9 でビルドしなおさなきゃ らんのかなぁ。 って、記憶をたどってみると、両ライブラリとも単独で使った ことがあるんだけど、vc7 と vc8 で同じバイナリをリンクしてた きがするのだが・・・ boost はなんでリビルドしなきゃならないの? とはいえ、 vc8 用にビルドした boost を vc9 でビルドしてる アプリケーションからリンクするとリンカが怒るので仕方ない。
115 名前:110のチラシの裏 mailto:sage [2007/12/02(日) 19:59:26 ] Visual C++ 2008 Express Edition で 1.35 ビルド終了。 failed 2 って出たけど、どこで失敗したのかわからん。 bjam はログを残してくれないのか?
116 名前:デフォルトの名無しさん mailto:sage [2007/12/02(日) 20:10:38 ] (bjam ほにゃらら 2> err.txt) > log.txt
117 名前:110のチラシの裏 mailto:sage [2007/12/02(日) 20:17:39 ] え、Windows の cmd.exe でも stderr のリダイレクトできたのか。 bash ばっかりだからしらんかった。
118 名前:110 mailto:sage [2007/12/03(月) 00:12:14 ] bjam で --toolset=msvc-vc90 にしてるのに libboost_graph-vc-mt-gd-1_35.lib みたいにライブラリファイルの名前中のツールセット名が -vc- になるのは、なぜ〜〜〜? 自分で変更するのタルい。
119 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:34:06 ] Boost.BuildがV2になった直後はそんな話も出てたような まぁperlかPowerShell使えばリネームなんて簡単だろ
120 名前:デフォルトの名無しさん mailto:sage [2007/12/03(月) 00:34:49 ] 前に同じような減少に見舞われたときは 原因を調べるもの面倒だったからファイル名を一括置換した なんでそうなるんだろうなあ
121 名前:110 mailto:sage [2007/12/03(月) 05:34:34 ] >>119 まぁリネーム自体は簡単なんだろうけど,そもそも ツールセット名ってどっかで正規化されていないのかと. bjam で指定するツールセット名も msvc だけでも 受け入れられるし, msvc-vc8 や msvc-vc80 なども 変に柔軟に受け入れられるけど,オートリンクでは vc80 とか指定してくるし… 「自分でつけた名前だろ!自分でオートリンクできずにどうするよ!」 って突っ込みを入れたくなった.
122 名前:110 mailto:sage [2007/12/03(月) 09:08:54 ] ツールセット名は msvc-8.0 と msvc-9.0 にすると ちゃんと vc80 と vc90 って文字がライブラリのファイル名に含まれます。 msvc / msvc-vc80 / msvc-vc90 も受け入れられるけど、 そうするとライブラリのファイル名におけるツールセットの部分が vc になってしまってオートリンクなどで都合が悪いです。
123 名前:110自分用メモ mailto:sage [2007/12/03(月) 09:41:13 ] V:\boost-vc8>bjam --builddir=builddir --build-type=complete --toolset=msvc-8.0 stage V:\boost-vc9>bjam --builddir=builddir --build-type=complete --toolset=msvc-9.0 stage
124 名前:デフォルトの名無しさん [2007/12/05(水) 12:27:20 ] BOOST_STRONG_TYPEDEF マクロって,テンプレート版ないのかな? typedef StrongTypedef<int> MyIntType; みたいに使いたい.自分で勝手に上のような使い方をしてるけど, 標準があるならそちらに従いたい. あと,BOOST_STRONG_TYPEDEF って totally_ordered しか 持っていないけど,もっと一般に additive とかそういうのを 持っているバージョンもあればいいと思う. さらに serialization にも対応してたらいいなぁ. #全部「おまえがやれ,自由に」と言われそうだけど #標準が決まってるほうが可読性が上がると思う.
125 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 14:12:06 ] >>124 > もっと一般に additive とかそういうのを > 持っているバージョンもあればいいと思う. 具体的にはどういう型の時なの? additiveが有効なのは。 この辺は、 class NAME##_archetype { ってマクロでやってるから、 テンプレートに文字列処理がないとテンプレートだけでやるのは厳しいね。
126 名前:デフォルトの名無しさん [2007/12/05(水) 21:17:01 ] bjamでビルドするときコンパイラに追加で渡したいフラグを設定するにはどのようにすればよいですか? warning C4996: 'std::XXX': Function call with parameters that may be unsafeとうるさいので bjam --toolset=msvc-9.0express "--cxxflags=/wd4996" stage としてみたのですがガンガンwarning C4996が報告されてしまいます できればboost/config/user.hppとかをいじくらずbjamのオプションとかで渡したいです
127 名前:デフォルトの名無しさん mailto:sage [2007/12/05(水) 21:20:50 ] bjamのオプションもたぶんあるんだろうけど、 わかんなかったら環境変数CLを使えばよいんじゃないかな。
128 名前:126 mailto:sage [2007/12/05(水) 21:45:28 ] わぉ 環境変数はずっとCFLAGSに設定してました ありがとうございます
129 名前:デフォルトの名無しさん [2007/12/07(金) 07:57:36 ] scoped_ptr の実装を見て operator! が定義されているから safe bool idiom にしようとおもって scoped_ptr を 継承した my_scoped_ptr を作ったら conversion が ambiguous だって怒られた.
130 名前:デフォルトの名無しさん [2007/12/07(金) 10:07:16 ] class A : public B のようにクラスを継承しています。 B に非侵入型の serialize が定義されている場合には A の serialize も非侵入型にしなくてはならないのでしょうか?
131 名前:130 [2007/12/07(金) 11:04:41 ] すみません、自分の勘違いだったようです。 boost::serialization 関係でもうひとつですが, BOOST_STRONG_TYPEDF で定義した型はそのまま シリアライズできないのでしょうか? 自分で非侵入型の serialize を定義するべきですか? boost.org/libs/serialization/doc/wrappers.html ここを見ると BOSOT_STRONG_TYPEDEF(T,D) で作った型 D をシリアライズする際には T に自動的に変換されるので そのままでいい、ということのようですし、実際 BOOST_STRONG_TYPEDEF マクロの定義を見ても そこで定義されている構造体には確かに変換が用意されているようなのですが
132 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:44:00 ] Boost.Preprocessorで、BOOST_PP_CAT(t, Foo)が tFoo でなく tWFoo と展開されたのだが・・・ t が他の文字ならおkで、また別のプロジェクトだと tFoo と正しく展開された。 ずっと解決できないので誰かご教授ください m(_ _)m
133 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 13:06:20 ] >>132 tっていうマクロかtFooっていうマクロが定義されてるとか?
134 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:19:07 ] boost::bindで拘束する変数はコピー可能なオブジェクトでないと駄目ですか?
135 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:39:51 ] >>134 ref、cref
136 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 21:43:20 ] >>135 ありがとう
137 名前:132 mailto:sage [2007/12/09(日) 05:28:54 ] >>133 左手のトークンの末尾が 't' だと駄目なようです。 BOOST_PP_CAT(Get, Hoge) とか BOOST_PP_CAT(Object, Piyo) とか。
138 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 08:20:28 ] >>137 それはもしかしてプリプロセッサのバグじゃないか? 使ってるプリプロセッサ何?
139 名前:132 mailto:sage [2007/12/09(日) 08:59:35 ] >>138 VC++ Express 2005 です。 新規プロジェクト作り直して丸ごと移したら正常にコンパイル出来ました・・・ 何か気持ち悪いけど、どこかプロジェクトの設定が壊れてたのだと思います。 お騒がせしました。
140 名前:132 mailto:sage [2007/12/09(日) 09:49:06 ] と思ったらまた再発したorz 何だこれ
141 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 10:28:26 ] 2005でboost使うのは辞めてくれ。 stdとtr1だけにしとけ
142 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 10:37:55 ] >>141 VC++7.1 は対応度高かったと思うけど 2005 だともしかして劣化してる? 2008 beta はどうなんだろ。
143 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 11:51:47 ] 初耳だな
144 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 12:04:45 ] >>142 2008はもう正式版出ているw
145 名前:デフォルトの名無しさん [2007/12/09(日) 12:56:18 ] >>141 何の問題もないが. 時々 IntelliSense が黙るだけで. VC9 ではかなり賢くなってる. それでも boost::bind つかいまくりで ファンクタ合成しまくりとかで黙ることもある.
146 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 14:09:37 ] VC8だとuBLASにlambdaにfunctionにmplまで使ったらclがエラーで落ちたことがあったな。 SP1当てたら大丈夫になったけどさ。
147 名前:デフォルトの名無しさん [2007/12/10(月) 14:24:36 ] boost::shared_ptr の参照カウンタがゼロになったときに、 delete 以外の解放処理を行わせる方法はありますでしょうか。 extern IMalloc* allocator; { boost::shared_ptr<ITEMIDLIST> pidl((ITEMIDLIST*)allocator->Alloc(10)); } //ここでallocator->Freeを呼ばせたい
148 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 14:36:59 ] >>147 デリータを指定できるコンストラクタがあるよ。 template <typename U, typename D> shared_ptr( U* ptr, D deleter);
149 名前:147 mailto:sage [2007/12/10(月) 15:08:43 ] おぉぉ、ありがとうございます。 解決しますた。 クラス全体のテンプレート引数 (1個しか無い) にしか目がいってなくて、 コンストラクタのところを見てなかったです。orz
150 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 00:49:05 ] >>149 焦っている時にありがちな罠だから落ち着いて資料を読めばいいと思うよ。(自分への叱咤でもありorz)
151 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 02:45:26 ] msvc+stlportの環境下で、Boost Build v2で、boostをインストールした人って いませんか? VC++8 + STLport-5.1.4 に boost-1.34.1 を入れようとして、 Boostビルドまでは何とかこぎ着けたのですが(コンパイルエラーなしで)、 いざ、boostを使ったプログラムをメイクしようとすると、 error LNK2019: 未解決の外部シンボル "bool __cdecl boost::filesystem::native(class stlpd_std::basic_string<char,class stlpd_std::char_traits<char>,class stlpd_std::allocator<char> > const &)" (?native@filesystem@boost@@YA_NABV?$basic_string@DV?$char_traits@D@stlpd_std@@V?$allocator@D@2@@stlpd_std@@@Z) が関数 _main で参照されました。 なんていうリンクエラーが出てしまいます。
152 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 03:53:33 ] ライブラリをリンクしろ。
153 名前:デフォルトの名無しさん [2007/12/11(火) 08:58:58 ] 環境の判定に BOOST_PLATFORM マクロを使おうと 思ってるんだけど、プリプロセッサって 文字列の比較できないよね? 環境の判定によいアイディアあったら教えてプリーズ。
154 名前:151 mailto:sage [2007/12/11(火) 09:54:39 ] >>152 [ツール]→[オプション]→[プロジェクトおよびソリューション]→[VC++ディレクトリ]で、 ライブラリファイルのディレクトリとして、 C:\Boost\lib を追加済みです。 さらに、プロジェクトのプロパティページで、 [構成プロパティ]→[リンカ]→[入力]→[追加の依存ファイル]で、 boost_filesystem-vc80-mt-gdp-1_34_1.lib を追加してみたのですが、ダメでした。(:_;)
155 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 11:39:13 ] >>154 =151 普通は「追加の依存ファイル」なんて設定しなくても オートリンクで適切なライブラリをリンクしてくれるはずなんだけどなぁ。 って STLPort 使ってない俺が言っても意味ないよね。
156 名前:151 mailto:sage [2007/12/11(火) 14:38:29 ] >>155 のはずなんだけど・・・。 v1のときは、普通にリンクできていたので。 なんというv2。 何も情報を出さないのはアレなんで、 ビルドフロー(失敗している奴)をここにまとめておきます。 Visual C++ 8.0 with SP1 STLport-5.1.4 → C:\STLport-5.1.4 として解凍。 boost-1.34.1 → C:\boost-1_34_1 として解凍。 OS: Microsoft Windows SP2 CPU: Intel
157 名前:151 mailto:sage [2007/12/11(火) 14:39:01 ] ■STLport stlport/stl/config/user_config.h の #define _STLP_USE_BOOST_SUPPORT 1 を有効にする。 > "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32.bat" を実行。 環境変数に、 STLP_BUILD_BOOST_PATH=C:\boost_1_34_1 を追加。 > cd build\lib > configure -c msvc8 --use-boost=C:\boost_1_34_1 > nmake /fmsvc.mak install でSTLPortをビルド。
158 名前:151 mailto:sage [2007/12/11(火) 14:41:47 ] ■boost stlport.jamファイルの不具合を修正する。 lists.boost.org/boost-build/2007/08/17123.php 参照 user-config.jamファイルを編集する。 using msvc : 8.0 ; using stlport : 5.1.4 : C:/STLport-5.1.4 ; 環境変数を設定する。vsvars32.bat @set STLPORT_PATH=C:\STLport-5.1.4 @set INCLUDE=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\INCLUDE;C:\S TLport-5.1.4\stlport;C:\Program Files\Microsoft Visual Studio 8\VC\INCLUDE;C:\ Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\include;C:\Program File s\Microsoft Visual Studio 8\SDK\v2.0\include;%INCLUDE% @set LIB=C:\Program Files\Microsoft Visual Studio 8\VC\ATLMFC\LIB;C:\STLport- 5.1.4\lib;C:\Program Files\Microsoft Visual Studio 8\VC\LIB;C:\Program Files\M icrosoft Visual Studio 8\VC\PlatformSDK\lib;C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\lib;%LIB% (実際はそれぞれ1行です) vsvars32-stlport.batにリネームして保存。 > "C:\Program Files\Microsoft Visual Studio 8\Common7\Tools\vsvars32-stlport.bat" ビルド。 > bjam --toolset=msvc stdlib=stlport --without-python install > build.log build.logを見たら、 ...updated 5631 targets... でビルド成功。
159 名前:151 mailto:sage [2007/12/11(火) 14:43:59 ] ■試しに動かしてみる。 stlport、boostともインクルード・ライブラリそれぞれのディレクトリ を追加。 int _tmain(int argc, _TCHAR* argv[]) { using namespace std; using namespace boost::filesystem; boost::filesystem::path outputFilePath( "C:\\hogehoge.txt", native ); boost::filesystem::fstream outputFile( outputFilePath ); //string s; //double d; //s = "53.0"; //d = boost::lexical_cast< double >( s ); //cout << "Hello world" << endl; //outputFile << "Hello world!" << endl; return 0; } でビルド。 すると、>>151 のようなエラー。 チラシの裏みたいでごめん。
160 名前:151 mailto:sage [2007/12/11(火) 14:46:34 ] ↑にあるコメント行はゴミです。すまん。削除するのを忘れた。。 ビルドの要らないboostライブラリは普通に動きます。lexical_castとか。
161 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 22:52:53 ] multi_index_container.hpp なんてのがあるのか orz 俺の一週間の苦労はなんだったんだ…… お前ら、先に教えてくれよ…… λ....トボトボ
162 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:01:52 ] >>161 どんまい。。。
163 名前:161 mailto:sage [2007/12/12(水) 08:08:55 ] さすがにインデックス3つ使って複雑なコンテナ作ると, Visual C++ 2008 でも IntelliSense が死ぬね. でも補完機能は IntelliSense がぴか一だと思うんだけど, それでも追い切れないとは…