Boost総合スレ part10 (385レス)
上下前次1-新
187: 2014/06/24(火)02:24 ID:tub1q0dy(1) AAS
stdoutでいいんじゃね?
188: 2014/08/08(金)10:09 ID:bvhG3beM(1) AAS
Version 1.56.0
August 7th, 2014 16:08 GMT
189: 2014/08/11(月)14:29 ID:jlzj25iu(1) AAS
Boost初心者です。
外部リンク:qiita.com
を参考に
boost 1_56_0
を以下のようにビルドしたのですが
b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=32 --stagedir=stage/x86 -j 8
b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=shared address-model=32 --stagedir=stage/x86 -j 8
b2 toolset=msvc threading=multi variant=debug,release link=static runtime-link=static address-model=64 --stagedir=stage/x64 -j 8
b2 toolset=msvc threading=multi variant=debug,release link=shared runtime-link=shared address-model=64 --stagedir=stage/x64 -j 8
このBoostを使ったVS2013プロジェクトで
error LNK1104: ファイル 'libboost_thread-vc120-mt-1_56.lib' を開くことができません。
が出て解消できません。thread関係は、以下のファイルがあります。
stage\x86\lib\libboost_thread-vc120-mt-s-1_56.lib
stage\x86\lib\libboost_thread-vc120-mt-sgd-1_56.lib
stage\x64\lib\libboost_thread-vc120-mt-s-1_56.lib
stage\x64\lib\libboost_thread-vc120-mt-sgd-1_56.lib
エラーメッセージで指摘されているファイル
libboost_thread-vc120-mt-1_56.lib
もビルドするには、どうすればよいでしょうか?
190(1): 2014/08/12(火)01:45 ID:O5xDEFJj(1) AAS
あてずっぽだけどmt-sってlink=staticなb2の生成物だと思うから
link=sharedのときの生成物をよく探せばいいんでないの
191(1): 2014/08/12(火)02:15 ID:oYrFzOtb(1) AAS
link=static runtime-link=shared
がないからじゃね
192: 2014/08/12(火)12:56 ID:oLoknUBV(1) AAS
>>190,191
レス有難うございました。
その通りでした。
link=static runtime-link=static
link=shared runtime-link=shared
以外に、
link=static runtime-link=shared
link=shared runtime-link=static
もビルドしたら解決しました。
193(1): 2014/08/13(水)11:16 ID:aA3WCwQl(1) AAS
copy して rename だけで良かったんじゃないかという気はする
194: 2014/08/16(土)00:19 ID:datmhcQU(1) AAS
それじゃだめなんよ
libcとdll混在でえらいことなる
コンパイラオプションでstatic版、dll版どっちリンクするか決定してるから
195(3): 2014/08/22(金)20:53 ID:GZiwALqE(1) AAS
ええっと、WindowsのDLLの仕様上、
link=sharedとruntime-link=staticの組み合わせは基本マズイはず。
.exe側と .dllが 別々に __FILE__ 構造体を保持したりして、
それを狙っている場合はいいが知らずにstatic変数のポインタを
やり取りするとクラッシュすると聞いた。
その逆も同様だと思った。
196: 2014/08/23(土)02:33 ID:830xsgTR(1) AAS
テンプレの関連書籍買おうと思うんだけど
内容はどんな感じなの?
Boostのホームページに書いてる以上のこと書いてる?
あとテンプレ貼られてから2年経つけど2年の間に新しく関連書籍出た?
197(2): 2014/08/23(土)04:37 ID:ZWPa2xFI(1) AAS
>>195
一番まずいのはHeap破壊
libcのmallocで確保したポインタをmsvcrt.dllのfree呼び出す、あるいはその逆するとHeapがおかしくなる
198: 2014/08/24(日)01:03 ID:z6SsqQq7(1/2) AAS
>>195,197
憶測で語るのはそこまで。不具合が実在するなら公式tracにバグ報告して貢献したほうがいい。
199(1): 2014/08/24(日)01:06 ID:dSaHZUjz(1) AAS
不具合というか仕様だろ
知らんと嵌るが
200: 2014/08/24(日)01:57 ID:z6SsqQq7(2/2) AAS
>>199
確かに >>197 のHeap破壊の件はboostと関係ないね。失礼。
exe側の標準ライブラリリンク方法を変えて対処すべきことを、側聞だけで基本マズいとか断言する >>195 みたいなの困るわ。
201: 2014/08/24(日)17:02 ID:zFKb4A2a(1/2) AAS
いや、exe側のリンク方法を変えてもポインタを渡したらアウト、対処できない。
exeの作成者側が仕様を理解していれば、それで動作させることも可能だが、
一般的にそんな用途はない。
ライブラリのバージョンの特殊なテストとか普通にはない状況。
202: 2014/08/24(日)17:12 ID:mYuQxuS2(1) AAS
結局>>193はやっちゃだめってこと
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
正規表現での後方参照みたいに一つのルール内でサブルールにマッチした結果によって
挙動を変えるルールを記述するときに使うものじゃないか?
上下前次1-新書関写板覧索設栞歴
あと 169 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.007s