Boost総合スレ part10at TECH
Boost総合スレ part10 - 暇つぶし2ch209:デフォルトの名無しさん
14/08/25 21:07:00.41 S+r49QAC.net
BOOST_ALL_DYN_LINKを定義しないと, libboost_の方にリンクする。
定義するとboost_の方へリンクしてDLLを使用するようになる。

210:208
14/08/26 00:28:28.83 00zrwMl9.net
>>209
ありがとうございます。
BOOST_ALL_DYN_LINKなるキーワードがあったのですね。

211:デフォルトの名無しさん
14/08/27 03:36:26.18 6l9mfgq+.net
#pragma comment(linker, "/NODEFAULTLIB:libboost_~.lib")
ってやって必要なcppだけ本体と一緒にコンパイルリンクするのが一番楽

212:デフォルトの名無しさん
14/10/06 22:24:43.15 tIlHofLk.net
ネットワーク関係はpocoと比べてどうなの?

213:デフォルトの名無しさん
14/10/26 12:18:21.65 /US9w/Z3.net
Boost spirit qiの、grammarに設定するinherited attributeについて
どうしても分からない点があるので、質問します。

* ソースコードとエラーメッセージ全文 *
URLリンク(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に使用できる型の制約条件や、類似のコンパイルエラーとその対処方法をご存じであれば
教えていただきたく思います。

214:デフォルトの名無しさん
14/10/26 15:46:28.32 r2skli7n.net
VS2013のC++でBoost1.56を使っているのですが、どんなプロジェクトを作ってもビルドすると
  コンパイルされたクラスの テンプレート のインスタンス化
'std::streamsize boost::iostreams::detail::copy_operation<Source,Sink>::operator ()(void)'
 の参照を確認してください
みたいか警告がいつも数十行出るんですが、「参照の確認」とは何をどうすれば良いのでしょうか?

215:デフォルトの名無しさん
14/10/27 22:32:16.46 DoYepSGR.net
>>213
エラー以前になんかInherited attributesの使い方と使いどころを基本から間違っていないか?
ここの例を見る限り URLリンク(www.boost.org)
正規表現での後方参照みたいに一つのルール内でサブルールにマッチした結果によって
挙動を変えるルールを記述するときに使うものじゃないか?

216:デフォルトの名無しさん
14/10/28 00:29:16.37 uWcH6Wmu.net
>>215
レスありがとうございます。
なるほど、想定されている使い方はこういったケースなのでしょうか。
だとしたらそもそも今回の私がやろうとしていたことには不適切だったかもしれませんね。
(パースするごとに、inherited attributeに設定したインスタンスに情報を反映させたかった)
余計なことは考えず、普通に対応するようにします。

コードについてですが、この例を参考にしてすこし試したところ
要するにboost::phoenixなオブジェクトであれば渡せるようで
grammarのoperator()に渡す引数をphoenix::val(...)やref(...)で包めば
コンパイルが通ることがわかりました。まだ動作確認はしていませんが・・・
ともあれ、ありがとうございました。

217:デフォルトの名無しさん
14/10/30 00:07:58.69 lLBGJ4gC.net
>>213,217
いまさらだがわかった範囲で言っておくと

Inherited attributes に対する条件には
URLリンク(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 ではなくもちろん関数でもないから条件を満たさずエラーになる
>>216でやったように phoenix の val, ref でラップすれば function, f のほうで条件を満たすことができるのでエラーにはならない
ということだと思う

218:デフォルトの名無しさん
14/10/30 11:39:19.54 ImhG7AIb.net
>>217
詳しく調べていただきありがとうございます。
「immediate value」判定を行っている個所を確認して、std::stringが通った理由も納得できました。
というか、かなり制限がきつかったんですね・・・そりゃ通らないわけだ。

219:片山博文MZ次期CEO ◆T6xkBnTXz7B0
14/11/01 21:27:12.06 jtBHZTX6.net
property tree使ったら、XMLの入出力は楽勝や!

220:デフォルトの名無しさん
14/11/07 00:16:46.51 HXLLL8gC.net
当然っちゃ当然なんだけど
boost::functionとstd::functionって実装違うんだね・・・
boost::lambdaで作ったファンクタが、前者だと格納できて
後者だと格納できずにコンパイルエラーになるケースに遭遇したよ

221:デフォルトの名無しさん
14/11/11 09:50:08.64 Q0YP3r9c.net
その違いはコンパイラの違いや、そのC++STLが対応するバージョンにもよるな
VC++2013のstd::unordered_mapのキーに素直にtuple指定できないからboost::unordered_map使ったりしてる
いずれ指定できるようになったらstdに戻す

222:デフォルトの名無しさん
15/01/05 15:35:07.20 eKet1BcH.net
boost::unordered_mapのキーに生ポインタ入れるのはさすがにマズイよね?

223:デフォルトの名無しさん
15/01/05 15:39:30.18 8wARtoFz.net
問題ない

224:デフォルトの名無しさん
15/01/05 19:12:49.53 o8IVACxb.net
問題ないけどmapで扱わずメンバにすればと思った

225:デフォルトの名無しさん
15/01/05 21:30:21.14 X1Ja4Fny.net
valueにshared_ptr、keyにはその生ポインタっていうのは良く使ってるなぁ

226:デフォルトの名無しさん
15/01/06 01:03:54.45 oPiR2ldc.net
あ、特に問題はないのか。
何となくだけど、「生ポインタ入れたらヤバそう」って思い込んでたよ…

227:デフォルトの名無しさん
15/01/06 10:02:24.08 LjydeOaO.net
ナマポ

228:デフォルトの名無しさん
15/01/06 16:03:04.47 2r6Mr9Ml.net
目的によるわな。
キーとしては単なる整数だしな。

229:デフォルトの名無しさん
15/01/07 09:03:30.78 ZvIwm56v.net
生ポの開放時にキーも削除又は解放後は使用されないのなら特に問題無さそう

230:デフォルトの名無しさん
15/01/11 09:45:08.68 9tA14JDu.net
smart pointerのdeleterでキー削除すればいいと思うよ

231:デフォルトの名無しさん
15/01/21 17:56:52.67 jsrBE0pL.net
URLリンク(boost.cppll.jp) の文字化け問題っていつ治るの?
毎回EUCに切り替えるのめんどくせーんだけど

232:デフォルトの名無しさん
15/01/21 18:34:30.53 65s3laC/.net
10年前から放置されたHPに文句言うなよww

233:デフォルトの名無しさん
15/01/22 12:40:59.12 /jHS8Rgv.net
文字化けなおしたのが、githubにコピーされてるよ。
URLリンク(www.freeml.com)

URLリンク(boostjp.github.io)

234:デフォルトの名無しさん
15/02/01 22:32:38.38 0ZgW1UY4.net
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
のように出ています。
↓続く

235:デフォルトの名無しさん
15/02/01 22:33:18.14 0ZgW1UY4.net
sage忘れすみません
実はこのエラーに対面する前、bootstrapを実行するときに
'cl'は内部コマンドまたは外部コマンド操作可能なプログラムまたはバッチファイルとして認識されていません
というエラーが出まして、それを解決するために
URLリンク(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日ほど悩んで答えが出なかったので皆さんの力を借りさせてください。お願いします。

236:デフォルトの名無しさん
15/02/02 02:24:51.60 E0RD/vzJ.net
jamを別途インスコ

237:デフォルトの名無しさん
15/02/02 02:58:34.63 rg/FV5H5.net
>>234です。
すみません。初心者なものでjamというものが何を指しているのかわかりません。
bjam.exeならbootstrapの時にb2.exeと一緒に生成されています。
ぐぐるとboost-jamというものも見つかったのですが、これは古いバージョンのインストールに使うもの?のようでした。

238:デフォルトの名無しさん
15/02/02 08:01:38.26 GrIIWufd.net
>>235
スタートメニューにあるVS2012 x86 Native Tools コマンド プロンプトから
b2を呼んでるか?

239:デフォルトの名無しさん
15/02/02 13:05:41.10 trPfkB+8.net
>>238
VS2012開発者コマンドプロンプトから呼んでました。
改めてVS2012 x86 Native Tools コマンド プロンプトでビルドしてみたのですが、failed updatingと言われ、ビルドできませんでした。

240:デフォルトの名無しさん
15/02/02 14:13:46.69 trPfkB+8.net
>>234です。
どこでエラーメッセージが区切られているのかわからなかったため、読み飛ばしてしまってました。これが全文のはずです。
if exist "bin.v2\libs\random\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_random-vc110-mt-s-1_57.lib"
DEL "bin.v2\libs\random\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_random-vc110-mt-s-1_57.lib"
C:\Users\ユーザー名\AppData\Local\Temp\b2_msvc_11.0_vcvarsall_x86.cmd
link /lib /NOLOGO /out:"bin.v2\libs\random\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_random-vc110-mt-s-1_57.lib"
@"bin.v2\libs\random\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_random-vc110-mt-s-1_57.lib.rsp"
...failed msvc.archive bin.v2\libs\random\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_random-vc110-mt-s-1_57.lib
...skipped <pstage\lib> libboost_random-vc110-mt-s-1_57.lib for lack of <pbin.v2\libs\random\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi> libboost_random-vc-110-mt-s-1_57.lib

DEL "bin.v2\libs\random\build\msvc-11.0\release\link-static\runtime-link-static\threading-multi\libboost_random-vc110-mt-s-1_57.lib"は確かにありました。
しかし、生成された日時を見るとこれはb2を実行した時に生成されたもののようです。
これはどうすればいいのでしょうか?

241:デフォルトの名無しさん
15/03/02 00:54:18.08 Hwlu4opX.net
Visual Studioでboostを使う自作の
 Static.lib プロジェクト
を作って、そのライブラリを使う自作の
 Console.exe プロジェクト
でリンクして使う場合、Console.exeのプロジェクトの設定で
リンカー
 追加のライブラリディレクトリ: C:\.....\stage\Win32\lib
とすればリンク出来て無事に実行できました。
このリンカーの設定は、Static.libを使うプロジェクトを作ると(今の場合Console.exe)、必ずしておく必要がありますか?
できればStatic.lib側のほうの設定でboostのリンクもできるなら、Console.exe側でやる手間が省けるのですが。

242:デフォルトの名無しさん
15/03/03 16:54:35.92 AGpwHs5d.net
boostのGILって標準ではBMPファイル読み込めないの?
ぐぐって出て来たnew&nbsp;ioってのはまだboost申請中?みたいだけど、これ使っておけばいいのかな?

243:デフォルトの名無しさん
15/03/03 21:11:19.83 xvH8TFuD.net
io_newでBMP読めたけど、色深度が読込むファイルと合ってないと例外発生するよ

244:デフォルトの名無しさん
15/03/03 22:56:19.91 AGpwHs5d.net
>>243
結構面倒くさい仕様だな…
勝手にフォーマット変更とかしてくれると便利だけどさすがに贅沢か…

245:デフォルトの名無しさん
15/04/12 00:28:36.73 g4+PudFo.net
boost.computeって正式に採用される予定あるの?

246:デフォルトの名無しさん
15/04/21 22:30:19.44 y8VTcogt.net
boost.pythonってstatic linkしてもpythonxx.dllは必要?教えてエロいひと。

247:デフォルトの名無しさん
15/04/21 22:33:35.19 1EHStcFK.net
いいえ

248:デフォルトの名無しさん
15/04/22 12:34:31.91 7M6Z+AJz.net
Win7 64bitで
python3.4 32bit版インストール
link=static runtime-link=static address-model=32でboost.pythonビルド
includeパスとlibパスを指定して、MTにして
#define BOOST_PYTHON_STATIC_LIB
#include <boost/python.hpp>
で32bitアプリケーションをビルド
pythonインストールしてないPCだと、python34.dll missingになる
うーん。何か足りないものありますか?

249:デフォルトの名無しさん
15/04/22 16:27:50.57 d3SYYAgE.net
モチベ

250:デフォルトの名無しさん
15/05/01 01:58:47.03 0XV7vRP4.net
boostの名前をつけるルールを
行列計算の時だけ破って
行列を大文字のAとかXにしてるの良くみるのですが
行列だけは例外的にルール破っていいことになってるのでしょうか
大文字はテンプレート変数ですよね?

251:デフォルトの名無しさん
15/05/01 06:41:31.41 8Yyb98Ue.net
行列ならば大文字になるのもいたしかたない‥

252:デフォルトの名無しさん
15/05/24 00:54:33.50 8pBQ8Eyo.net
boostってちょっとはC++ができる人が作ってるライブラリですよね?
ビルド時になんであんなに警告がでるんですか?
もしかして素人さん?

253:デフォルトの名無しさん
15/05/24 12:38:51.82 MEnSJywT.net
いちいち警告気にしないのがプロ

254:デフォルトの名無しさん
15/05/24 16:29:54.52 YWYjkrfU.net
難しすぎて警告どころではないとか

255:デフォルトの名無しさん
15/05/24 16:53:29.63 LHOaqm0Y.net
警告を調べて見れば分かるぞ、素人さん

256:デフォルトの名無しさん
15/05/25 17:47:01.78 x3KPbf/f.net
警告を出す側にもリテラシーが求められている訳です

257:デフォルトの名無しさん
15/05/25 18:28:28.99 qa+JUMyM.net
リテラシってなーに

258:デフォルトの名無しさん
15/05/25 20:07:15.35 Fk7XkuNr.net
2チャンをやってはいけません、ということ

259:デフォルトの名無しさん
15/05/25 20:16:21.95 qa+JUMyM.net
なるほどー

260:デフォルトの名無しさん
15/06/06 11:53:50.32 DXSt7rl7.net
boostって結構遅いんだな

261:デフォルトの名無しさん
15/06/06 11:56:08.52 +rQgIJZi.net
コンパイル時間をboostしてくれます

262:デフォルトの名無しさん
15/06/06 12:23:05.22 DXSt7rl7.net
コンパイル時間はどうでもいいです。
コンパイルなんて休憩時間くらいしかやらないから・・・

263:デフォルトの名無しさん
15/06/06 12:31:03.72 htxI56Um.net
コンパイル時間のことでないとすると
どのライブラリが何と比べてどれくらい遅いのかを書かないと

264:デフォルトの名無しさん
15/06/06 12:33:52.43 DXSt7rl7.net
ublasのvectorが自前で作ったものよりも

265:デフォルトの名無しさん
15/06/06 12:37:12.25 b3bO68kx.net
boostって実行時も遅いよな

266:デフォルトの名無しさん
15/06/06 12:52:10.14 htxI56Um.net
そうか大変だな

267:デフォルトの名無しさん
15/06/06 13:14:38.58 b3bO68kx.net
てかもう使ってないし

268:デフォルトの名無しさん
15/06/06 13:16:04.99 +rQgIJZi.net
そうかよかったな

269:デフォルトの名無しさん
15/06/06 15:54:55.27 sNpvOYgU.net
poco使え

270:デフォルトの名無しさん
15/09/02 17:09:56.87 DQQjJ9NG.net
コンパイルは遅い

271:デフォルトの名無しさん
15/11/03 21:27:24.75 hk+PiOLT.net
使ってますか

272:デフォルトの名無しさん
15/11/03 21:42:20.64 i0g4PCT9.net
Boostがあれば何でもできる

273:デフォルトの名無しさん
15/11/04 11:14:56.51 tuc/GHuH.net
1 2 3 だー

274:.パンティーガァル
15/11/17 21:19:23.78 s4bNHyHx.net
一時は随分持て囃されたようだが
コレもすっかりネタライブラリと化したなw

275:デフォルトの名無しさん
15/11/19 01:09:18.93 0U7CT6+W.net
ネタかどうかはともかく、PCのアプリ開発がビジネス的においしくないから
国内ではもっぱらプログラム廃人(w)の道具でしかない

276:デフォルトの名無しさん
15/12/12 07:43:19.75 D8DPAl+5.net
コンパイルがだるいのであまり使いたくないが、シリアライゼーションとファイルシステムは使いたいんだよな

277:デフォルトの名無しさん
15/12/12 08:27:40.06 Jcuermv/.net
nugetにあるじゃん

278:デフォルトの名無しさん
15/12/18 23:28:22.35 vCtvI+uE.net
Version 1.60.0
URLリンク(www.boost.org)

279:デフォルトの名無しさん
15/12/19 11:58:40.26 O2ZUrLIw.net
っとコンパイルしてみようっと

280:デフォルトの名無しさん
15/12/19 12:40:41.91 P/E9W26M.net
Lapackもっと気持ちよく使えるようにして欲しいなあ

281:デフォルトの名無しさん
16/01/18 05:50:39.36 mFzGs0rQ.net
boost::geometryって2Dは充実してきてるけど、3Dへの拡張は現状どんな感じですか?
2010年くらいに将来やる予定って開発者が言ってた気がするけど

282:282
16/01/19 00:15:43.99 4raSQRby.net
フォーラム見たら3Dへの拡張は全体的にまだまだって感じですね
せっかくトレイト使ってジェネリックにやってるんだから早く実装して欲しい・・・

283:デフォルトの名無しさん
16/01/20 22:24:02.62 KeJuY5Mf.net
boost graphのドキュメントがクソ

284:デフォルトの名無しさん
16/04/05 02:48:34.34 2X2ng6yq.net
age

285:デフォルトの名無しさん
16/04/21 22:40:40.88 0L9uK1O2.net
parallel BGLのドキュメントがくそ

286:デフォルトの名無しさん
16/05/11 16:53:35.32 GzlL/1jH.net
つか、boost自体がくそ

287:デフォルトの名無しさん
16/05/11 17:04:40.20 CRgs0nLf.net
じゃもっといいものにしてください

288:デフォルトの名無しさん
16/05/13 00:38:47.56 gIaucaE3.net
read_iniでファイルを読み込んだ時
セクションが1つも設定されていない場合にエラーを出力したいのですが
セクションだけを取得する方法はありますか?
漠然とした質問ですみません。
boostのバージョンは1.54です

289:デフォルトの名無しさん
16/05/13 01:16:17.32 +/HM4ABC.net
>>288
read_iniの第2引数にptree渡せばiniファイルの中身取ってこれる
URLリンク(stackoverflow.com)
ところで、ホントにセクション全部取ってくる必要あるの?
空のファイルかどうかやファイルの存在有無のチェックでよかったりしない?

290:デフォルトの名無しさん
16/05/13 07:24:40.50 Vn8cSOwV.net
>>289
ID変わりました。>>288です。
ご回答ありがとうございます
ファイルの中身が、str=100だけなど
セクション名が無く、キーとキー値しかない場合
にもエラーを出力したかったので感謝です。

291:デフォルトの名無しさん
16/05/13 14:15:20.29 Vn8cSOwV.net
また質問ですみません。
iniファイルにセクション名のみ書かれている場合にエラーを出力したいのですが
>>289の方法でやってもセクション名を取得出来ませんでした。read_iniで確認するには
どうすればいいでしょうか?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch