2014年1月26日日曜日

MitakaをVS2013でビルドする (失敗)



Step1. ソースをDL
4次元デジタル宇宙プロジェクトのページからソースを見つけてDL

Step2. VSで開く
slnファイルがついてないのでVSでプロジェクトを作成
ソリューション名をMitaka、プロジェクト名をMitakaとした場合、VSのソリューションディレクトリ/Mitaka/Mitaka/にソースのZIPを展開して出てきたcommon/,README.txt,Mitaka/を移動
こういう名前の付け方すると結果的にMitakaが三層重なることになるけど気にしない
そして移したファイルをVSのソリューションエクスプローラーにドラッグアンドドロップしてやるとヘッダ、ソースが登録される

Step3. 依存ライブラリ
DirectXのライブラリはWindows SDK8.1入れれば大丈夫?
Readmeに書いてある以外でWindows SDK7.1も必要になるので入れる
入れるときに多分失敗するのでここ見る
http://www.projectgroup.info/tips/Others/comm_0004.html
めんどくせえ…

libjpeg,libpng,zlibのソースを頑張ってDLする
zlibはwindows用のバイナリが公開されてるが(14/01/26現在)libpngのビルド時にソースが必要になる
libjpegビルド時にnmakeしたらwin32.makが見つからないとか言われてンンンってなるから
C:\Program Files\Microsoft SDKs\Windows\v7.0\Include\Win32.Makを
C:\Program Files(x86)\Microsoft Visual Studio 12.0\VC\includeにコピーしとく
なんでこんな作業が必要なんだ
でlibjpegをここらへん見ながらビルド
マルチスレッドとかなんとかいうのは知らない
http://oshiro.bpe.es.osaka-u.ac.jp/people/staff/imura/products/JpegFileIO

libpngは↑こ↓こ
http://xeo.sakura.ne.jp/wordpress/201202/program/361/

Step3. 依存ライブラリをプロジェクトから参照
さっきビルドできたやつをプロジェクトから見えるようにする
http://blog.livedoor.jp/tmako123-programming/archives/22001972.html
zlibはバイナリで配布してあるやつがそれっぽい階層になってるからいいとして
libjpeg、libpngはどのファイルを移動すればいいかパッとわからない
不親切だ
とりあえずlib/には.libを、include/には.hを全部入れとけばいいかな?

Step4. ソース修正
これでやっとビルドできるかというとそうではない
VSでビルド→プロジェクトのビルド してやるとエラーいっぱい吐くので修正してやる

まずM_PIが見つからないやつ
http://www.atinfinity.info/blog/archives/14
編集→検索と置換→フォルダーを指定して検索
でプロジェクト内で"#define _USE_MATH_DEFINES
を追記追記追記

minが見つからないやつ
#include <algorithm.h>
を追記

_CRT_SECURE_NO_WARNINGS
http://forums.codeguru.com/showthread.php?509615-How-to-use-define-_CRT_SECURE_NO_DEPRECATE&p=2001735#post2001735
_CRT_SECURE_NO_WARNINGSをプロジェクトのプロパティ→C/C++→プリプロセッサ→プリプロセッサの定義 に追加
何の根本的解決にもなってない気がするがとりあえずこれで

error C4996: 'stricmp': The POSIX name for this item is deprecated. Instead, use the ISO C++ conformant name: _stricmp.
stricmpを_stricmpに書き換える


error C2065: 'Z_BEST_COMPRESSION' : 定義されていない識別子です。
#include  <zlib.h>

error C1083: include ファイルを開けません。'gl/wglext.h'
http://www.opengl.org/registry/#headers から4ファイルをダウンロードし
C:\Program Files (x86)\Windows Kits\8.1\Include\um\gl
に移動

cannot open include file 'afxres.h'

未解決の外部シンボルなんちゃら
プロジェクトのプロパティ→リンカー→入力→追加の依存ファイル
glu32.lib
opengl32.lib
libjpeg.lib
libpng.lib
を追記


……まだまだエラーが出る
そろそろ諦める_(:3」 ∠)_