Boost総合スレ part10 (385レス)
Boost総合スレ part10 http://mevius.5ch.net/test/read.cgi/tech/1347611669/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
195: デフォルトの名無しさん [sage] 2014/08/22(金) 20:53:28.55 ID:GZiwALqE ええっと、WindowsのDLLの仕様上、 link=sharedとruntime-link=staticの組み合わせは基本マズイはず。 .exe側と .dllが 別々に __FILE__ 構造体を保持したりして、 それを狙っている場合はいいが知らずにstatic変数のポインタを やり取りするとクラッシュすると聞いた。 その逆も同様だと思った。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/195
196: デフォルトの名無しさん [sage] 2014/08/23(土) 02:33:52.06 ID:830xsgTR テンプレの関連書籍買おうと思うんだけど 内容はどんな感じなの? Boostのホームページに書いてる以上のこと書いてる? あとテンプレ貼られてから2年経つけど2年の間に新しく関連書籍出た? http://mevius.5ch.net/test/read.cgi/tech/1347611669/196
197: デフォルトの名無しさん [sage] 2014/08/23(土) 04:37:08.56 ID:ZWPa2xFI >>195 一番まずいのはHeap破壊 libcのmallocで確保したポインタをmsvcrt.dllのfree呼び出す、あるいはその逆するとHeapがおかしくなる http://mevius.5ch.net/test/read.cgi/tech/1347611669/197
198: デフォルトの名無しさん [sage] 2014/08/24(日) 01:03:29.49 ID:z6SsqQq7 >>195,197 憶測で語るのはそこまで。不具合が実在するなら公式tracにバグ報告して貢献したほうがいい。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/198
199: デフォルトの名無しさん [sage] 2014/08/24(日) 01:06:01.45 ID:dSaHZUjz 不具合というか仕様だろ 知らんと嵌るが http://mevius.5ch.net/test/read.cgi/tech/1347611669/199
200: デフォルトの名無しさん [sage] 2014/08/24(日) 01:57:11.06 ID:z6SsqQq7 >>199 確かに >>197 のHeap破壊の件はboostと関係ないね。失礼。 exe側の標準ライブラリリンク方法を変えて対処すべきことを、側聞だけで基本マズいとか断言する >>195 みたいなの困るわ。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/200
201: デフォルトの名無しさん [sage] 2014/08/24(日) 17:02:34.37 ID:zFKb4A2a いや、exe側のリンク方法を変えてもポインタを渡したらアウト、対処できない。 exeの作成者側が仕様を理解していれば、それで動作させることも可能だが、 一般的にそんな用途はない。 ライブラリのバージョンの特殊なテストとか普通にはない状況。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/201
202: デフォルトの名無しさん [sage] 2014/08/24(日) 17:12:05.16 ID:mYuQxuS2 結局>>193はやっちゃだめってこと http://mevius.5ch.net/test/read.cgi/tech/1347611669/202
203: デフォルトの名無しさん [sage] 2014/08/24(日) 21:50:12.26 ID:zFKb4A2a ついでに 逆にlink=staticとruntime-link=sharedの場合だと、 利用者が常に一つの.exeを作る場合には良いが 利用者も.dllを書いて、そちら側からもboostを利用する場合、 同様の問題が発生するので× そうすると一般用途にビルドを行う場合 link=static runtime=static link=shared runtime=shared この2つのパターンだけ用意すれば良いと思われる http://mevius.5ch.net/test/read.cgi/tech/1347611669/203
204: デフォルトの名無しさん [sage] 2014/08/25(月) 18:17:09.07 ID:K+Y1EV40 (´-`).oO (なんでboostとC標準のリンクオプションがわざわざ別々になってると思う?) http://mevius.5ch.net/test/read.cgi/tech/1347611669/204
205: デフォルトの名無しさん [sage] 2014/08/25(月) 18:52:52.89 ID:34Z9Wbr7 正直link=とruntime-link=のそれぞれの意味がわかってないけど、 とりあえずlink=staticのしか使ったことない。 runtime-linkのほうはMSVCのコード生成設定に合わせるけど。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/205
206: デフォルトの名無しさん [sage] 2014/08/25(月) 19:50:29.57 ID:TLgrT9xd >>204 解説よろしくお願いします。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/206
207: デフォルトの名無しさん [sage] 2014/08/25(月) 20:13:31.67 ID:S+r49QAC Express版の2010だとEula.txtが付属してないので、 /MDだと著作権的にグレーになってしまう。 /MTでコンパイルしないと公開できないw http://mevius.5ch.net/test/read.cgi/tech/1347611669/207
208: デフォルトの名無しさん [sage] 2014/08/25(月) 20:33:49.53 ID:34Z9Wbr7 ていうかMSVCで普通にプロジェクト作って普通にインクルード&ビルドしたら link=staticで作成されたファイル名のほうしか読みにいかなくない? マルチスレッドDLLでもマルチスレッドでもdebugでもreleaseでも。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/208
209: デフォルトの名無しさん [sage] 2014/08/25(月) 20:35:42.94 ID:34Z9Wbr7 208はexeを作ったときの話。dllについては知らない。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/209
210: デフォルトの名無しさん [sage] 2014/08/25(月) 21:07:00.41 ID:S+r49QAC BOOST_ALL_DYN_LINKを定義しないと, libboost_の方にリンクする。 定義するとboost_の方へリンクしてDLLを使用するようになる。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/210
211: 208 [sage] 2014/08/26(火) 00:28:28.83 ID:00zrwMl9 >>210 ありがとうございます。 BOOST_ALL_DYN_LINKなるキーワードがあったのですね。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/211
212: デフォルトの名無しさん [sage] 2014/08/27(水) 03:36:26.18 ID:6l9mfgq+ #pragma comment(linker, "/NODEFAULTLIB:libboost_〜.lib") ってやって必要なcppだけ本体と一緒にコンパイルリンクするのが一番楽 http://mevius.5ch.net/test/read.cgi/tech/1347611669/212
213: デフォルトの名無しさん [] 2014/10/06(月) 22:24:43.15 ID:tIlHofLk ネットワーク関係はpocoと比べてどうなの? http://mevius.5ch.net/test/read.cgi/tech/1347611669/213
214: デフォルトの名無しさん [sage] 2014/10/26(日) 12:18:21.65 ID:/US9w/Z3 Boost spirit qiの、grammarに設定するinherited attributeについて どうしても分からない点があるので、質問します。 * ソースコードとエラーメッセージ全文 * http://pastebin.com/FaNQKEh1 コンパイラはVS2013 Pro Update3 の cl.exe (バージョン18.00.30723) boostのパッケージはバージョン1.55(7zip版)です。 inherited attributeとして自作の構造体を使用したいと思い qi::grammarのSignatureの引数部に自作の構造体を設定したところ 「その構造体にresultの定義がない」というエラーメッセージが起きコンパイルが失敗しました。 構造体の代わりにstd::string(resultというメンバは持っていないはず)を使用すると 問題なくコンパイルが通るので、inherited attributeに設定できる型に何か制約があるようにも思えるのですが boost.orgのドキュメントからはそれらしき記述が見つけられず、エラーメッセージを見ても私にはわかりませんでした。 海外含めて関連する情報がないか探したのですが(boost spirit qi inherited attribute requirement 等で検索) 解決策を見つけられませんでした。 inherited attributeに使用できる型の制約条件や、類似のコンパイルエラーとその対処方法をご存じであれば 教えていただきたく思います。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/214
215: デフォルトの名無しさん [sage] 2014/10/26(日) 15:46:28.32 ID:r2skli7n VS2013のC++でBoost1.56を使っているのですが、どんなプロジェクトを作ってもビルドすると コンパイルされたクラスの テンプレート のインスタンス化 'std::streamsize boost::iostreams::detail::copy_operation<Source,Sink>::operator ()(void)' の参照を確認してください みたいか警告がいつも数十行出るんですが、「参照の確認」とは何をどうすれば良いのでしょうか? http://mevius.5ch.net/test/read.cgi/tech/1347611669/215
216: デフォルトの名無しさん [sage] 2014/10/27(月) 22:32:16.46 ID:DoYepSGR >>214 エラー以前になんかInherited attributesの使い方と使いどころを基本から間違っていないか? ここの例を見る限り ttp://www.boost.org/doc/libs/1_56_0/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html 正規表現での後方参照みたいに一つのルール内でサブルールにマッチした結果によって 挙動を変えるルールを記述するときに使うものじゃないか? http://mevius.5ch.net/test/read.cgi/tech/1347611669/216
217: デフォルトの名無しさん [sage] 2014/10/28(火) 00:29:16.37 ID:uWcH6Wmu >>216 レスありがとうございます。 なるほど、想定されている使い方はこういったケースなのでしょうか。 だとしたらそもそも今回の私がやろうとしていたことには不適切だったかもしれませんね。 (パースするごとに、inherited attributeに設定したインスタンスに情報を反映させたかった) 余計なことは考えず、普通に対応するようにします。 コードについてですが、この例を参考にしてすこし試したところ 要するにboost::phoenixなオブジェクトであれば渡せるようで grammarのoperator()に渡す引数をphoenix::val(...)やref(...)で包めば コンパイルが通ることがわかりました。まだ動作確認はしていませんが・・・ ともあれ、ありがとうございました。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/217
218: デフォルトの名無しさん [sage] 2014/10/30(木) 00:07:58.69 ID:lLBGJ4gC >>214,217 いまさらだがわかった範囲で言っておくと Inherited attributes に対する条件には ttp://www.boost.org/doc/libs/1_56_0/libs/spirit/doc/html/spirit/qi/reference/basics.html の > Some parsers (e.g. primitives and non-terminals) may take in additional attributes. Such parsers take the form: > p(a1, a2,..., aN) > where p is a parser. Each of the arguments (a1 ... aN) can either be an immediate value, or a function, f, with signature: > T f(Unused, Context) > where T, the function's return value, is compatible with the argument type expected and Context is the parser's Context type > (The first argument is unused to make the Context the second argument. This is done for uniformity with Semantic Actions). があって その immediate value の判定は boost::is_scalar か boost::spirit::traits::is_string のどちらかが真であるかで判定されてる。 けれど MyStruct はそのどちらにも該当しないので immediate value ではなくもちろん関数でもないから条件を満たさずエラーになる >>217でやったように phoenix の val, ref でラップすれば function, f のほうで条件を満たすことができるのでエラーにはならない ということだと思う http://mevius.5ch.net/test/read.cgi/tech/1347611669/218
219: デフォルトの名無しさん [sage] 2014/10/30(木) 11:39:19.54 ID:ImhG7AIb >>218 詳しく調べていただきありがとうございます。 「immediate value」判定を行っている個所を確認して、std::stringが通った理由も納得できました。 というか、かなり制限がきつかったんですね・・・そりゃ通らないわけだ。 http://mevius.5ch.net/test/read.cgi/tech/1347611669/219
220: 片山博文MZ次期CEO ◆T6xkBnTXz7B0 [sage] 2014/11/01(土) 21:27:12.06 ID:jtBHZTX6 property tree使ったら、XMLの入出力は楽勝や! http://mevius.5ch.net/test/read.cgi/tech/1347611669/220
221: デフォルトの名無しさん [sage] 2014/11/07(金) 00:16:46.51 ID:HXLLL8gC 当然っちゃ当然なんだけど boost::functionとstd::functionって実装違うんだね・・・ boost::lambdaで作ったファンクタが、前者だと格納できて 後者だと格納できずにコンパイルエラーになるケースに遭遇したよ http://mevius.5ch.net/test/read.cgi/tech/1347611669/221
222: デフォルトの名無しさん [sage] 2014/11/11(火) 09:50:08.64 ID:Q0YP3r9c その違いはコンパイラの違いや、そのC++STLが対応するバージョンにもよるな VC++2013のstd::unordered_mapのキーに素直にtuple指定できないからboost::unordered_map使ったりしてる いずれ指定できるようになったらstdに戻す http://mevius.5ch.net/test/read.cgi/tech/1347611669/222
223: デフォルトの名無しさん [sage] 2015/01/05(月) 15:35:07.20 ID:eKet1BcH boost::unordered_mapのキーに生ポインタ入れるのはさすがにマズイよね? http://mevius.5ch.net/test/read.cgi/tech/1347611669/223
224: デフォルトの名無しさん [sage] 2015/01/05(月) 15:39:30.18 ID:8wARtoFz 問題ない http://mevius.5ch.net/test/read.cgi/tech/1347611669/224
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 161 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.028s