Boost総合スレ part10 (385レス)
上下前次1-新
203: 2014/08/24(日)21:50 ID:zFKb4A2a(2/2) AAS
ついでに
逆にlink=staticとruntime-link=sharedの場合だと、
利用者が常に一つの.exeを作る場合には良いが
利用者も.dllを書いて、そちら側からもboostを利用する場合、
同様の問題が発生するので×
そうすると一般用途にビルドを行う場合
link=static runtime=static
link=shared runtime=shared
この2つのパターンだけ用意すれば良いと思われる
204(1): 2014/08/25(月)18:17 ID:K+Y1EV40(1) AAS
(´-`).oO (なんでboostとC標準のリンクオプションがわざわざ別々になってると思う?)
205: 2014/08/25(月)18:52 ID:34Z9Wbr7(1/3) AAS
正直link=とruntime-link=のそれぞれの意味がわかってないけど、
とりあえずlink=staticのしか使ったことない。
runtime-linkのほうはMSVCのコード生成設定に合わせるけど。
206: 2014/08/25(月)19:50 ID:TLgrT9xd(1) AAS
>>204
解説よろしくお願いします。
207: 2014/08/25(月)20:13 ID:S+r49QAC(1/2) AAS
Express版の2010だとEula.txtが付属してないので、
/MDだと著作権的にグレーになってしまう。
/MTでコンパイルしないと公開できないw
208(1): 2014/08/25(月)20:33 ID:34Z9Wbr7(2/3) AAS
ていうかMSVCで普通にプロジェクト作って普通にインクルード&ビルドしたら
link=staticで作成されたファイル名のほうしか読みにいかなくない?
マルチスレッドDLLでもマルチスレッドでもdebugでもreleaseでも。
209: 2014/08/25(月)20:35 ID:34Z9Wbr7(3/3) AAS
208はexeを作ったときの話。dllについては知らない。
210(1): 2014/08/25(月)21:07 ID:S+r49QAC(2/2) AAS
BOOST_ALL_DYN_LINKを定義しないと, libboost_の方にリンクする。
定義するとboost_の方へリンクしてDLLを使用するようになる。
211: 208 2014/08/26(火)00:28 ID:00zrwMl9(1) AAS
>>210
ありがとうございます。
BOOST_ALL_DYN_LINKなるキーワードがあったのですね。
212: 2014/08/27(水)03:36 ID:6l9mfgq+(1) AAS
#pragma comment(linker, "/NODEFAULTLIB:libboost_〜.lib")
ってやって必要なcppだけ本体と一緒にコンパイルリンクするのが一番楽
213: 2014/10/06(月)22:24 ID:tIlHofLk(1) AAS
ネットワーク関係はpocoと比べてどうなの?
214(2): 2014/10/26(日)12:18 ID:/US9w/Z3(1) AAS
Boost spirit qiの、grammarに設定するinherited attributeについて
どうしても分からない点があるので、質問します。
* ソースコードとエラーメッセージ全文 *
外部リンク:pastebin.com
コンパイラは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に使用できる型の制約条件や、類似のコンパイルエラーとその対処方法をご存じであれば
教えていただきたく思います。
215: 2014/10/26(日)15:46 ID:r2skli7n(1) AAS
VS2013のC++でBoost1.56を使っているのですが、どんなプロジェクトを作ってもビルドすると
コンパイルされたクラスの テンプレート のインスタンス化
'std::streamsize boost::iostreams::detail::copy_operation<Source,Sink>::operator ()(void)'
の参照を確認してください
みたいか警告がいつも数十行出るんですが、「参照の確認」とは何をどうすれば良いのでしょうか?
216(1): 2014/10/27(月)22:32 ID:DoYepSGR(1) AAS
>>214
エラー以前になんかInherited attributesの使い方と使いどころを基本から間違っていないか?
ここの例を見る限り 外部リンク[html]:www.boost.org
正規表現での後方参照みたいに一つのルール内でサブルールにマッチした結果によって
挙動を変えるルールを記述するときに使うものじゃないか?
217(1): 2014/10/28(火)00:29 ID:uWcH6Wmu(1) AAS
>>216
レスありがとうございます。
なるほど、想定されている使い方はこういったケースなのでしょうか。
だとしたらそもそも今回の私がやろうとしていたことには不適切だったかもしれませんね。
(パースするごとに、inherited attributeに設定したインスタンスに情報を反映させたかった)
余計なことは考えず、普通に対応するようにします。
コードについてですが、この例を参考にしてすこし試したところ
要するにboost::phoenixなオブジェクトであれば渡せるようで
grammarのoperator()に渡す引数をphoenix::val(...)やref(...)で包めば
コンパイルが通ることがわかりました。まだ動作確認はしていませんが・・・
ともあれ、ありがとうございました。
218(1): 2014/10/30(木)00:07 ID:lLBGJ4gC(1) AAS
>>214,217
いまさらだがわかった範囲で言っておくと
Inherited attributes に対する条件には
外部リンク[html]:www.boost.org
の
> 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 のほうで条件を満たすことができるのでエラーにはならない
ということだと思う
219: 2014/10/30(木)11:39 ID:ImhG7AIb(1) AAS
>>218
詳しく調べていただきありがとうございます。
「immediate value」判定を行っている個所を確認して、std::stringが通った理由も納得できました。
というか、かなり制限がきつかったんですね・・・そりゃ通らないわけだ。
220: 片山博文MZ次期CEO ◆T6xkBnTXz7B0 2014/11/01(土)21:27 ID:jtBHZTX6(1) AAS
property tree使ったら、XMLの入出力は楽勝や!
221: 2014/11/07(金)00:16 ID:HXLLL8gC(1) AAS
当然っちゃ当然なんだけど
boost::functionとstd::functionって実装違うんだね・・・
boost::lambdaで作ったファンクタが、前者だと格納できて
後者だと格納できずにコンパイルエラーになるケースに遭遇したよ
222: 2014/11/11(火)09:50 ID:Q0YP3r9c(1) AAS
その違いはコンパイラの違いや、そのC++STLが対応するバージョンにもよるな
VC++2013のstd::unordered_mapのキーに素直にtuple指定できないからboost::unordered_map使ったりしてる
いずれ指定できるようになったらstdに戻す
223: 2015/01/05(月)15:35 ID:eKet1BcH(1) AAS
boost::unordered_mapのキーに生ポインタ入れるのはさすがにマズイよね?
224: 2015/01/05(月)15:39 ID:8wARtoFz(1) AAS
問題ない
225: 2015/01/05(月)19:12 ID:o8IVACxb(1) AAS
問題ないけどmapで扱わずメンバにすればと思った
226: 2015/01/05(月)21:30 ID:X1Ja4Fny(1) AAS
valueにshared_ptr、keyにはその生ポインタっていうのは良く使ってるなぁ
227: 2015/01/06(火)01:03 ID:oPiR2ldc(1) AAS
あ、特に問題はないのか。
何となくだけど、「生ポインタ入れたらヤバそう」って思い込んでたよ…
228: 2015/01/06(火)10:02 ID:LjydeOaO(1) AAS
ナマポ
229: 2015/01/06(火)16:03 ID:2r6Mr9Ml(1) AAS
目的によるわな。
キーとしては単なる整数だしな。
230: 2015/01/07(水)09:03 ID:ZvIwm56v(1) AAS
生ポの開放時にキーも削除又は解放後は使用されないのなら特に問題無さそう
231: 2015/01/11(日)09:45 ID:9tA14JDu(1) AAS
smart pointerのdeleterでキー削除すればいいと思うよ
232: 2015/01/21(水)17:56 ID:jsrBE0pL(1) AAS
外部リンク:boost.cppll.jp の文字化け問題っていつ治るの?
毎回EUCに切り替えるのめんどくせーんだけど
上下前次1-新書関写板覧索設栞歴
あと 153 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.045s