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で変な挙動をするかもしれないけど、知らん。