人生初心者の雑記

すべてにおいてド素人な人がいろんなことを書くよ

Siv3dとboost 超覚書

ものすごい詰まったのでメモ

boostのパスの通し方(ver1_58を例にしている)
インクルード boost_1_58_
バイナリ boost_1_58_/stage/lib


エラー対処

LINKエラー: libboost_context-vc120-mt-sgd-1_58.lib が開けない
LINKエラー: libboost_context-vc120-mt-s-1_58.lib が開けない

参考
VisualStudio2010でboostをビルドする - 結果だけでなく過程も見てください

bjam.exe toolset=msvc variant=release link=static runtime-link=static or shared

boostをビルドするとき,うえのコマンドを実行しないといけないときがある。
variant=debug で実行すると, boost_1_58_/stage にlibboost...mt-...gd-1-58とついたものができる
variant=release で実行すると, boost_1_58_/stage にlibboost...mt-...-1-58とついた.libができる

runtime-link=static,shared を変えて実行すると, mt-s- や mt-sgd- とついた.libができる(どっちがsのつくファイルを作るかは忘れた。)

warning LNK4098: defaultlib 'libcmtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library

siv3dのプロジェクトのプロパティを見る。プロパティ->C/C++->コード生成->ランタイムライブラリ
siv3dはデフォルトでデバッグ,リリースともに /MT 
その関係だと思うけど,デバッグでビルドしようとすると上のようなエラーが出た。

プロパティウィンドウ左上の「構成」をデバッグにして
プロパティ->リンカー->依存関係追加(一番上の項目) に
libcmtd.lib
を追加

(同ページ)->無視するデフォルトライブラリ(上から三番目の項目) に
libcmt.lib を追加



とりあえずこれで動いたけど、勝手にいじったからsiv3dで変な挙動をするかもしれないけど、知らん。