Boost総合スレ part10 (385レス)
1-

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に切り替えるのめんどくせーんだけど
233: 2015/01/21(水)18:34 ID:65s3laC/(1) AAS
10年前から放置されたHPに文句言うなよww
234: 2015/01/22(木)12:40 ID:/jHS8Rgv(1) AAS
文字化けなおしたのが、githubにコピーされてるよ。
外部リンク:www.freeml.com

外部リンク[html]:boostjp.github.io
235
(2): 2015/02/01(日)22:32 ID:0ZgW1UY4(1/2) AAS
Windows8でVisual studio 2012にBoost1.57.0をビルドしようとしているのですが、失敗して困っています。
ネット上にあるboostのインストールのやり方を参考に、

bootstrap
b2 toolset=msvc-11.0 --build-type=complete stage

とビルドしたのですが、

...failed updating 411 target...
...skipped 556 targets...
...updated 4241 targets...

と出ます。エラーメッセージが大量に出るのですが、一部を見ると、
一番最初に

link.jam no such file or directory

というエラー出たり、

call "C:\Program Files (x86)\microsoft visual studio 11.0\vc\vcvarsall.bat x86>nul



...failed msvc.archive bin.v2\libs\wave\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_wave-vc110-mt-s-1_57.lib
...skipped <pstage\lib> libboost_wave-vc110-mt-s-1_57.lib for lack of <pbin.v2\libs\wave\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi> libboost_wave-vc-110-mt-s-1_57.lib

のように出ています。
↓続く
236
(1): 2015/02/01(日)22:33 ID:0ZgW1UY4(2/2) AAS
sage忘れすみません

実はこのエラーに対面する前、bootstrapを実行するときに

'cl'は内部コマンドまたは外部コマンド操作可能なプログラムまたはバッチファイルとして認識されていません

というエラーが出まして、それを解決するために
外部リンク[html]:blog.remu.biz
このサイトを参考にC:\Program Files(x86)\Microsoft Visual Studio 11.0\VC\bin\vcvars32.batに

@SET VSINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 11.0
@SET VCINSTALLDIR=C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC
@SET FrameworkDir32=C:\Windows\Microsoft.NET\Framework
@SET FrameworkVersion32=v4.0.30319
@SET Framework35Version=v3.5

の追加と

::@call :GetVSCommonToolsDir
::@if "%VS110COMNTOOLS%"=="" goto error_no_VS110COMNTOOLSDIR

::@call "%VS110COMNTOOLS%VCVarsQueryRegistry.bat" 32bit No64bit

のコメントアウトの編集をしました。
もしかしたらそれが原因なのでしょうか?しかし元に戻してビルドを行ってみたのですがやはりビルドはできませんでした。
3日ほど悩んで答えが出なかったので皆さんの力を借りさせてください。お願いします。
237: 2015/02/02(月)02:24 ID:E0RD/vzJ(1) AAS
jamを別途インスコ
238: 2015/02/02(月)02:58 ID:rg/FV5H5(1) AAS
>>235です。
すみません。初心者なものでjamというものが何を指しているのかわかりません。
bjam.exeならbootstrapの時にb2.exeと一緒に生成されています。
ぐぐるとboost-jamというものも見つかったのですが、これは古いバージョンのインストールに使うもの?のようでした。
239
(1): 2015/02/02(月)08:01 ID:GrIIWufd(1) AAS
>>236
スタートメニューにあるVS2012 x86 Native Tools コマンド プロンプトから
b2を呼んでるか?
1-
あと 146 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.019s