Boostを語れゴラァ part5
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001BOOTS
2007/10/18(木) 08:09:35過去スレ
part 4 http://pc11.2ch.net/test/read.cgi/tech/1175663346/
part 3 http://pc11.2ch.net/test/read.cgi/tech/1158991211/
part 2 http://pc8.2ch.net/test/read.cgi/tech/1139313234/
part 1 http://pc8.2ch.net/test/read.cgi/tech/1091198276/
■関連サイト■
Boost C++ Libraries
http://www.boost.org/
Boost 翻訳プロジェクト
http://boost.cppll.jp/HEAD/
Let's Boost
http://www.kmonos.net/alang/boost/
boost info
http://shinh.skr.jp/boost/
0856デフォルトの名無しさん
2008/03/17(月) 05:02:050857デフォルトの名無しさん
2008/03/19(水) 11:39:07なんか心当たりある?最近までビルドできていたので boost.test まわりで
最近何か変化があったか見てみたんだけど何もなかった.とりあえず
bjam --builddir=builddir-vc9 --build-type=complete
--toolset=msvc-9.0 --without-test stage 1>..\build.log
みたいにして --without-test してビルドしてるけど,気持ち悪い.
0858デフォルトの名無しさん
2008/03/19(水) 11:48:26--toolset=msvc-9.0 1>..\build.log
ちなみにこんな風に --build-type=minimal (つまりデフォルト)
だとビルドできる.なんかターゲットが重複しているとか・・
正確なエラーメッセージを後で貼ります.
0859857
2008/03/19(水) 11:55:12in virtual-target.register-actual-name from module virtual-target
error: Duplicate name of actual target
なので,
http://lists.boost.org/boost-build/2007/02/16143.php
と同じような感じ.
0860857
2008/03/19(水) 11:57:05http://www.boost.org/boost-build2/doc/html/bbv2/faq/s02.html
これか?これなのか?
0861デフォルトの名無しさん
2008/03/19(水) 12:40:59_, ._
( ・ω・) now shibakaring ...
○={=}〇,
|:::::::::\, ', ´
、、、、し 、、、(((.@)WWWWWWWWWWWWWWWWWWWWWWW (26%)
0862デフォルトの名無しさん
2008/03/19(水) 12:43:000863857
2008/03/19(水) 12:59:28http://pastebin.windy.cx/?page=view&id=1205899359
libboost_test_exec_monitor-vc90-mt-gd-1_35.lib
をビルドするにあたってvirtual targetが重複している
ってことらしいんだけど・・
0864857
2008/03/19(水) 14:27:50いままで trunk でもとらぶったこと無かったから
RC のタグが打たれてたことに気づかなかった。
0865デフォルトの名無しさん
2008/03/19(水) 18:35:550866865
2008/03/19(水) 19:52:190867857
2008/03/19(水) 19:53:06http://svn.windy.cx/index.php?boost
0868デフォルトの名無しさん
2008/03/19(水) 21:42:14IDがあったところでプログラミング自体に有益な議論にはならないからだろ。
理数系板はID無し多いね。
0869デフォルトの名無しさん
2008/03/19(水) 21:46:14質問者がだれか分かりやすいから
ID 欲しいというときはある。
0870デフォルトの名無しさん
2008/03/19(水) 23:12:57/.Jでこんなん見っけた。オススメ。
ttp://www.blue.sky.or.jp/grass/doc_ja.html
0871デフォルトの名無しさん
2008/03/19(水) 23:25:100872デフォルトの名無しさん
2008/03/20(木) 07:09:37GJ
0873デフォルトの名無しさん
2008/03/20(木) 09:28:01Pythonで実現することに決定しました。
0874デフォルトの名無しさん
2008/03/20(木) 17:45:05Visual Studio 2005を用いて
プロジェクトの種類を「CLR」、「Windows フォームアプリケーション」
として新規作成したフォームにボタンを一つ設置し、以下のソースを記述し、
vector<wstring> vec;
vec.push_back(L"Hello");
double pi = 3;
wofstream file(L"save.txt");
text_woarchive oa(file);
oa << (const vector<wstring>& ) vec;
oa << pi;
実行したところ、
oa << (const vector<wstring>& ) vec;
の箇所で
「Debug Assertion Failed!
Program:c\Documents and Settings\unchi65sai\archivetest\Debug\archivetest.exe
File: dbgheap.c
Line: 1473
Expression: _CrtIsVaildHeapPointer(pUserData) 」
とダイアログが表示されて停止してしまいます。
ちなみに、
oa << (const vector<wstring>& ) vec;
の部分をコメント化すると、正常に処理が行われ、テキストファイルが生成されます。
この現象は、プロジェクトのプロパティを何か変更することで回避できるのでしょうか?
あるいは、CLRでは、 stringの書き出しできないものなのでしょうか?
よろしくお願いします。
0875デフォルトの名無しさん
2008/03/20(木) 17:52:500876デフォルトの名無しさん
2008/03/20(木) 18:20:08C++/CLIでunmanagedなコードを混在させてboostを使うとそうなる。
アプリケーションのエントリポイントを次のようにすると直ると思う。
?mainCRTStartupStrArray@@$$FYMHP$01AP$AAVString@System@@@Z
ちなみにこの問題はVS2008では直っているらしい。
0877874
2008/03/20(木) 19:17:41プロジェクトのプロパティを開き、
「構成プロパティ」→「リンカ」→「詳細」→「エントリポイント」
の設定を変更したところ、正常に機能するようになりました。
情報をありがとうございました。
0878デフォルトの名無しさん
2008/03/21(金) 13:56:04配布に際して boost python 自身の DLL は一緒に配布しなければ
ならないのは当然として、Python バイナリパッケージ由来のファイル
も何か配布しなければならないのでしょうか?
0879878
2008/03/21(金) 14:00:43C:\WINDOWS\system32\python25.dll
も必要なようです。
しかし!驚愕の事実!
python25.dll 自体が Visual C++ 7.1 のランタイムを要求している!
自分は Visual C++ 8 を使っているのです。異なるバージョンの
ランタイムを要求する DLL たちをあわせて使っていいのかなぁ。
今までもサードパーティのライブラリをそういうこと気にせず
使ってたけど、動いていたし、まぁいいか。いいことにします。
作ってるアプリも売り物じゃないし。
0880デフォルトの名無しさん
2008/03/21(金) 15:21:480881デフォルトの名無しさん
2008/03/21(金) 20:38:360882デフォルトの名無しさん
2008/03/21(金) 23:15:47好きになったぜ>ぶーすと
0883デフォルトの名無しさん
2008/03/22(土) 00:13:10POCO (C++ Portable Components, http://pocoproject.org/)
0884デフォルトの名無しさん
2008/03/22(土) 00:49:54DLLというのはもともと、DLLを使う側に依存しないようになってるので、
DLL「A」とDLL「B」が違うランタイムを使っていてもぜんぜんOKです。
今回は例外として、普通はアプリからどのランタイムを使っているのかなんて分からないし、
気にするべきでもないと思います。
(考慮すべきことはマルチスレッドに対応してるかどうかくらい)
ランタイムが違えば、必要なDLLが増えるということはあるけど、
ランタイムが違うことで動かなくなることは多分無いです。
もし動かなかったら、それは別の問題が発生している可能性高し。
> Python バイナリパッケージ由来のファイル
> も何か配布しなければならないのでしょうか?
Pythonがインストールされている環境を前提にするならば配布する必要は無いです。
そうでないなら配布する必要があります。
0885デフォルトの名無しさん
2008/03/22(土) 10:06:27ふむ、そうなのか。ミューテックスとかは
OSで管理するものだから問題ないんだな。
でもマルチスレッド考えるとなんか副作用が
ありそうなんで、暇なときに調べてみる
0886デフォルトの名無しさん
2008/03/22(土) 10:33:000887デフォルトの名無しさん
2008/03/22(土) 10:38:150888デフォルトの名無しさん
2008/03/22(土) 20:13:27みたいなことをlambdaやbindを使ってやる方法ありますか?
0889デフォルトの名無しさん
2008/03/22(土) 20:23:24if_( _1 % 2 == 0 )[
cout << _1 << "は偶数\n"
].else_[
cout << _1 << "は奇数\n"
]
);
こんな感じで書けます。
出典 ttp://www.kmonos.net/alang/boost/classes/lambda.html
0890デフォルトの名無しさん
2008/03/22(土) 20:25:230891デフォルトの名無しさん
2008/03/22(土) 20:26:47std::sort(v.begin(), v.end(), bind(&Class::Func, _1) > bind(&Class::Func, _2));
0893オガちゃん萌え ◆tyvkWCNtzY
2008/03/23(日) 21:04:51OSうんぬんより、mutexは別スレッドからlock/unlock期間中のアクセスを待機させるから安全か
どうかとえば、使用は慎重を期するよ
別プロセスは関係ないが…
共有メモリやらメモリマップドファイルは別だけど
セマフォ、ミューテックスの使用は本当に必要であるかを加味した方が良さそうに思う
boost::thread::mutex(だっけ?) はでも便利だね
スコープから抜ければ勝手にデストラクタがunlockしてくれるのも楽でよい
自作してもauto変数なら当然かも試練、スマソw
>>886
悪の枢軸たるWindowsもそう考えると良いとこあるのかね
でもさ、結局printfなんかもさMSVCRT.dllなんかがラップしてんだよね
メイクファイルでビルドしようとしてリンクエラーで苦戦したことがよくあったなあ
>>888
>>891が答え書いてるけど、bindは便利だよな!
0894デフォルトの名無しさん
2008/03/23(日) 22:06:130895デフォルトの名無しさん
2008/03/23(日) 22:11:55なんで雑談してんの?
411 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/22(土) 23:17:29
相談が無いからだろう
相談できる雰囲気でもないがね
412 名前:デフォルトの名無しさん[sage] 投稿日:2008/03/23(日) 00:44:28
何で雑談しているのかを聞く それも雑談なんじゃね?
自分の胸に聞くのがはえーんじゃね?
415 名前:オガちゃん萌え ◆tyvkWCNtzY [sage] 投稿日:2008/03/23(日) 20:37:34
>>410-412
まぁ固いこと言わないでマターリやろうよ
こんな事書く人間に何を言っても無駄かと
NGが得策
0896オガちゃん萌え ◆tyvkWCNtzY
2008/03/23(日) 22:25:51スレ違いってほど外れた話題はしてないつもりだが?
俺叩く暇あるなら、なんかboostについて書いてくれ
0897デフォルトの名無しさん
2008/03/23(日) 22:31:180898デフォルトの名無しさん
2008/03/23(日) 22:39:32時々コンパイラが音を上げるのが困る
0899オガちゃん萌え ◆tyvkWCNtzY
2008/03/23(日) 23:42:11STLスレで誰か書いていたが、EffectiveSTLにSTLのエラーは読むなってのがあって、実際に本棚に
埋もれたEffectiveSTL読んだらconstキャスト忘れとかのエラーを理解しろみたいなのが書いてあったよ
SingletonとAbstractFactoryパターンをよく使うんだが、AbstractFactoryをテンプレートにして
中にmap<int, string>かなんかやったときにwarningが出まくったことあったw
それこそ、この内容はSTLか。
boost一番よく使うのはツールだな
tokenizer、regex、bindなんかはもう無しじゃ生きていけない
0900デフォルトの名無しさん
2008/03/24(月) 00:33:17C++からその実装されたクラスをnewしてPythonに渡す。
といったような事がやりたいんですが、boost.pythonで出来ますか?
参考書籍、およびサイトなども教えてもらえたらありがたいです。
0901デフォルトの名無しさん
2008/03/24(月) 07:41:37俺はPython使い始めたばっかりで一方向の使い方しかしてないけど興味ある。
できたら教えて欲しいな。
0902デフォルトの名無しさん
2008/03/24(月) 10:14:150903デフォルトの名無しさん
2008/03/24(月) 13:56:39ドトネトは断る!
って、うそ。 C++/CLI は使ってるし。
とはいえ、非UNIXで動かしたいプログラムに
多いんだよな、Boost.Python 使いたくなるケース。
IronPython + mono でやれって?断る!
0904デフォルトの名無しさん
2008/03/24(月) 13:59:17ランタイムDLL類不要になるし。
0905デフォルトの名無しさん
2008/03/24(月) 15:53:59Lua + LuaBindとかSquirrel + SqPlusとかも考えましたが、
Boost.Pythonで無理ならSquirrelにするかな。
ランタイムDLLはオプションをdefineしてやればいらなくなると
どっかで読んだ覚えがあるんですが読み間違いですかね。
0906デフォルトの名無しさん
2008/03/25(火) 22:31:11Unknown compiler version - please run the configure tests and report the results
と言うワーニングが Boost を使っているソースででました。
リンクも成功し、実行もできるのですが。。
このワーニングを消すにはどのようにしたらよいのでしょうか?
0907デフォルトの名無しさん
2008/03/25(火) 22:56:111.34.1がでたのは、VC9が出る前だ。
0908デフォルトの名無しさん
2008/03/26(水) 01:00:40ヘッダーは VC8,VC9 共通みたいでした。
0909デフォルトの名無しさん
2008/03/26(水) 03:24:57boostのどのライブラリでワーニングが出ます?もう少し詳しい状況が分かると調べられるのですが。
0910デフォルトの名無しさん
2008/03/26(水) 05:28:280911デフォルトの名無しさん
2008/03/26(水) 10:04:29おいらは906じゃないけど、SVN で落としたのに置き換えたらエラーがでなくなった
あんがと
0912デフォルトの名無しさん
2008/03/26(水) 10:42:38コンパイル時に config/visualc.hpp 内のワーニングなので、ライブラリは関係なさそうなのですが。。
0913デフォルトの名無しさん
2008/03/26(水) 11:31:541.35の正式版が出るまで無視するってのは駄目か?
どうせ実害はないんだし。
0914デフォルトの名無しさん
2008/03/26(水) 12:17:22まぁ自分の使いたいライブラリがうまく動いていればそれでよし。
0915デフォルトの名無しさん
2008/03/26(水) 16:18:250916デフォルトの名無しさん
2008/03/30(日) 11:14:460917デフォルトの名無しさん
2008/03/30(日) 12:05:34News
* Version 1.35.0
New Libraries: Asio, Bimap, Circular Buffer, Function Types, Fusion, GIL, Interprocess, Intrusive, Math/Special Functions, Math/Statistical Distributions, MPI, System.
Updated Libraries: Graph, Hash, Iostreams, Multi Array, Multi-index Containers, Serialization, Thread, Wave, Xpressive.
March 29th, 2008 12:00 GMT
ひさしぶりのうpだけあって盛りだくさんだなぁ
0918デフォルトの名無しさん
2008/03/30(日) 12:19:330919デフォルトの名無しさん
2008/03/30(日) 12:32:340920デフォルトの名無しさん
2008/03/30(日) 12:47:12というかPOSIXを前提に設計されているようで、
Windowsだと素直に実装できないってのもあるのかな。
0921デフォルトの名無しさん
2008/03/30(日) 13:27:27敬遠してる
0922デフォルトの名無しさん
2008/03/30(日) 17:03:02と本スレ参考にv1.35を
�@vcvars32.bat実行
�Abjam --toolset=msvc-9.0 stage
としたんですが、以下のように出てビルドできません。
何か足りないツールでもあるのでしょうか?
MkDir1 lib
'C:\DOCUME~1\????' ???A?????R?}???h???????O???R?}???h?A
???????\???v???O???????????o?b?` ?t?@?C?????????F?????????????????B
mkdir "lib"
...failed MkDir1 lib...
MkDir1 bin.v2
'C:\DOCUME~1\????' ???A?????R?}???h???????O???R?}???h?A
???????\???v???O???????????o?b?` ?t?@?C?????????F?????????????????B
mkdir "bin.v2"
...failed MkDir1 bin.v2...
...skipped bin.v2\libs for lack of bin.v2...
...skipped bin.v2\libs\test for lack of bin.v2\libs...
...skipped bin.v2\libs\test\build for lack of bin.v2\libs
以下たくさんskipped
0923デフォルトの名無しさん
2008/03/30(日) 17:41:060924デフォルトの名無しさん
2008/03/30(日) 17:50:37ユーザー名は確かに日本語ですわ。
で、多分"Documents and Settings"配下で何かしようと
してるんだと思うんだけどユーザーだけ切り替えればいけるかな。
やってみる。
�@vcvars32.bat実行
�Abjam --toolset=msvc-9.0 stage
の手順は一般的に問題ないっすよね?
0925デフォルトの名無しさん
2008/03/30(日) 18:17:59administratorに切り替えたらビルドできたような気がする。
dllとかlibがbin.v2っていうフォルダに出来てる。
ただ、
bjam --toolset=msvc-9.0 stage だと
アップデートになってしもうた。
1.35で新たに追加されたAsioやら全てをビルドするためには
別のオプションがいる??
0926デフォルトの名無しさん
2008/03/30(日) 18:25:040927デフォルトの名無しさん
2008/03/30(日) 19:31:091.34.1の既存のものはビルドされた(アップデート)んだけども
1.35.0で新しく追加されたものがビルドされてないみたい。
bjam --builddir=builddir-vc9 --build-type=complete --toolset=msvc-9.0 stage 2>&1 | tee c:\boost.log
でやってみたんだけど、static、dynamic(dll)の二つのバージョンが出来たこと以外
変わらんかった。
http://www.boost.org/doc/tools/jam/jam/usage.html
には
bjam ( -option [value] | target ) *
でtargetを指定しなければ全てビルドされると書いてあるんだけどなあ。
0928デフォルトの名無しさん
2008/03/30(日) 19:50:45bjamの最新版は日本語メッセージが文字化けして???になるよ。
0929デフォルトの名無しさん
2008/03/30(日) 20:07:01ああそうなんだ。
とりあえず既存のものはビルドできるみたいだ。
release、debugとも出来てる。
asioとかがビルドできない。ビルド対象を指定するか
設定ファイルなんかが必要なんだろうか。
0930デフォルトの名無しさん
2008/03/30(日) 20:37:58asioはライブラリ不要のはず
0931デフォルトの名無しさん
2008/03/30(日) 21:16:540932デフォルトの名無しさん
2008/03/30(日) 21:28:170933デフォルトの名無しさん
2008/03/30(日) 21:56:29ホントだ。そうみたい。
もしかして1.35でライブラリ作成する必要のある新しいものって
無いのかも?
ソケットで遊んで見る。
0934デフォルトの名無しさん
2008/03/30(日) 22:32:330935デフォルトの名無しさん
2008/03/30(日) 22:40:410936デフォルトの名無しさん
2008/03/30(日) 22:42:11新しいものの中ではsystemが要ビルド。
0937デフォルトの名無しさん
2008/03/30(日) 22:45:49それならstage\libにライブラリできてるから成功してるっぽい。
0938デフォルトの名無しさん
2008/03/31(月) 01:02:350939デフォルトの名無しさん
2008/03/31(月) 01:17:39自分で指定するのめんどくさい。
0940デフォルトの名無しさん
2008/04/01(火) 02:50:31boost.pythonはpythonをcから呼びたい時だけ使うのがいい
0941デフォルトの名無しさん
2008/04/01(火) 14:55:030942デフォルトの名無しさん
2008/04/01(火) 21:32:570943デフォルトの名無しさん
2008/04/02(水) 02:49:16tokenizerを使用したプログラムをデバッグモードで実行したところ
超絶遅くて絶望したんですけど、これは回避できないですか?
0944デフォルトの名無しさん
2008/04/02(水) 03:17:270945デフォルトの名無しさん
2008/04/02(水) 17:54:19Boostの中の人はM$信者なの??
0946デフォルトの名無しさん
2008/04/02(水) 18:15:37信者どころか社員いるし
しかし、パスするテストを増やすのに必要なのは信者じゃなくて人柱と開発者だ
0947デフォルトの名無しさん
2008/04/02(水) 18:44:530948デフォルトの名無しさん
2008/04/02(水) 20:53:59どういう方法が良いでしょうか?
0949デフォルトの名無しさん
2008/04/02(水) 21:02:020950デフォルトの名無しさん
2008/04/02(水) 21:56:08struct parse : public grammar<parse>
{
template <typename ScannerT>
struct definitionmy(parse const& self) {
//略
int_p[bind(&parse::func, self, _1)]; //bindでメンバを渡す
};
void func(const int val);
};
こういうことですか?
他の方法って無いのでしょうかね?
毎回bind書くのはしんどいんですが。
0951デフォルトの名無しさん
2008/04/02(水) 22:35:21極力assign_aとかpushback_aとか定義済みのやつで済ませるようになった。
あと、そのfuncはconst付けないとエラーになるよ。
0952デフォルトの名無しさん
2008/04/02(水) 23:58:07bjam --toolset=msvc-8.0 -sBZIP2_SOURCE=〜 -sZLIB_SOURCE=〜 --stagedir=. stage
ってやってビルドしたら、なぜかreleaseビルドのマルチスレッドのlibファイルしかビルドされないんだが、こういう仕様に変わったの?
前はdebugとかも出てたよね?
0953デフォルトの名無しさん
2008/04/03(木) 00:33:38試行錯誤の結果、こうすれば全部ビルドされた
bjam --toolset=msvc-9.0 stage release debug link=static,shared runtime-link=static,shared
BZIP2_SOURCEとかは事前にsetしてある
0954デフォルトの名無しさん
2008/04/03(木) 00:56:22>funcはconst付けないとエラーになる
boost::functionに一旦入れてから使ったらエラーが出ずに
通っちゃったので気が付きませんでしたw
0955デフォルトの名無しさん
2008/04/03(木) 01:50:21どうやったの?
俺も今Spirit使ってんだが、constが厳しくて
mutableにお出ましいただいている。
レス数が950を超えています。1000を超えると書き込みができなくなります。