Effekseerの導入に当たって調べた長い道のり?3
Visual Studio 2012がインストールできたので
Effekseerのサンプルを動かしてみます。
ここのリンクが、かげさんが検証した時のサンプルの場所になります。
https://t.co/MZOLDCQOnv
2015/06/21修正
上の取り消し線のところでは、
かげさんが検証した時のサンプルの場所をリンクしてましたが
現在は削除されて下記のURLになっているとのことです。
DXライブラリのフォルダの指定が相対指定になっているみたいで
展開された「プロジェクトに追加すべきファイル_VC用」フォルダを
見てくれているようで、サクッと動きました!
こうなると初音ミク冒険記に組み込んでみたくなります!
さて、ここで現状の初音ミク冒険記本体のソースフォルダ
HatsuneMikuBoukenkiをコピーして
コピーしたフォルダ名をHatsuneMikuBoukenkiEffekseerに変更。
(Visual Studioのバージョン違いによる問題が起きた時の対策です)
実は今、記事を書いていてHatsuneMikuBoukenkiEffecseerと
kとcを間違えてたことに気づきました。
いかん、いかん・・・
早速、Visual Studio 2008版のソリューションファイルを開きます。
まずは、おもむろにF5キーで、この段階で動くかの確認です。
はい、予想通りVisual Studio 2008 → Visual Studio 2012に
ソリューションファイルをコンバートする時に
勝手に落とされる情報がありました・・・
プロジェクトのプロパティの項目がいくつか抜け落ちてます。
error C1083: include ファイルを開けません。 'DxLib.h': No such file or Directory
ということで
DXライブラリのパスは、2か所の指定どちらも落ちていたので
DXライブラリのホームページのVisual Studio 2012の設定を
見ながら設定し直しました。
また、Luaのパスは、「..\」を使った相対パスにしていたつもりが
2箇所、「F:\」から始まる絶対パスになっていました。
Windows7とWindows8のデュアルブートだと
ドライブレター(ドライブの文字)が変わるので
Windows7でFドライブだったのは、Windows8ではDドライブになってるので
変更が必要です。
次にリンクエラーの話。
error Lnk2026: モジュールは SAFESEH イメージには安全ではありません。ってやつだ。 そもそも日本語がおかしい気がするけど これはVisual Sutdio 2012のエラーなんで ツッコミは無しでお願いします

こいつは「構成プロパティ」-「リンカー」-「詳細設定」にある
「安全な例外ハンドラーを含むイメージ」で
いいえ(/SAFESEH:NO)を選択すると回避できました。
error LNK1207: ~の PDB形式に互換性がありません。 削除して再度ビルドして下さい。
初音ミク冒険記は、
基本的にプロジェクト構成をReleaseで作っているのだが、
Releaseフォルダにできるpdbファイルの形式に互換性がないようで、
Relaseフォルダの拡張子pdbのファイルを削除する必要がありました。
(単純にリビルドしたほうが良かったのかもしれません)
ちなみにReleaseモードでも
ブレイクポイントを使ったデバッグはできるので、
かげさんは初音ミク冒険記の本体の開発では
Debugモードでコンパイルすることはほとんどありません。
(C#側の開発ツールは何も考えずDebugモードですが・・・)
Debugモードでビルドするとデバッグ情報が付く。
Releaseモードの方がexeファイルが小さくなるのはこのためだ。
exeファイルのサイズが小さいとロードが早いし、
Releaseモードでだけポインタ系エラーが出る
なーんてことがあることを経験的に知っているので
VC++の時は、Releaseモードでしか開発していないのです。
これで起動できたものの、今度はデバッグ時に設定されているはずの
コマンドライン引数が外れてました。
初音ミク冒険記はコマンドライン引数に1とか適当なのをつけると
ピアプロ・キャラクター・ライセンスなどの説明を省略して起動できる
開発用モードがあるのです。
ここまでで、Visual Studioのバージョン違いによる問題は解決!
Effekseerのサンプルを見る限り、ほとんどコピペでいけるはずと
思っていたんですが、どこに貼り付けるか考えないといかんのぉ・・・
という状態に。
何気に初音ミク冒険記の初期化処理は
結構いろいろとやっています。
そもそも初期処理にしても、
・プラットフォームのプレ初期処理
・DXライブラリの初期処理
・プラットフォームの初期処理
・ゲームシステムの初期処理
とやってることが多いのです・・・
とりあえずコピペの場所は、
サンプルのDXライブラリの関数を目安にしました。
ソース修正は、終わったので
ビルド前に環境の確認をします。
サンプルのお手軽なところは
DXライブラリの「プロジェクトに追加すべきファイル_VC用」が
そのままあるところです。
DXライブラリの使い方解説は
コチラを参考にどうぞ。
上記リンクのVisual Studioのバージョンごとの説明で出てくる
「プロジェクトに追加すべきファイル_VC用」が展開されたフォルダに
なっています。
念のため、今現在DXライブラリを使っている人は、
今現在の「プロジェクトに追加すべきファイル_VC用」として設定しているフォルダを
名前を変更するなどしてバックアップしておいて
展開された「プロジェクトに追加すべきファイル_VC用」フォルダを
コピーすると良いでしょう。
なお、既にDXライブラリを使っている人だと
DXライブラリのバージョンを変えずに済ませたいという人もいると思います。
が、ココで問題があります。
かげさんはココでハマりました。
error LNK1104: ファイル 'DxDrawFunc_vs2012_x86.lib'を開くことができませんとかが出て、全然、リンクが通りません・・・
たしかにEffekseerのサンプルには、エラーになっているlibファイルがあり
かげさんが元々使っていたDXライブラリ3.13dには存在しません。
なのでエラーが出るファイルを
地道にコピーしてビルドを繰り返していきました。
が、libを開けないの後には
error LNK2005: ~は既に DxLib.lib(DxGraphicsWin.obj)で定義されていますと言ったエラーが大量に出て、今度こそ意味不明な状態に・・・
Effekseerの開発者さんに確認してみたところ
Effekseerから始まるlibではないので
DXライブラリの古いバージョンと新しいバージョンの競合が
原因ではないか?とのこと。
DXライブラリのバージョンを変えずに済ませる時は
readme.txtに書かれている
Effekseerから始まる6個のlibファイルと
Effekseerから始まる3個のhファイルをコピーするんですが
問題は、コピー先にあるDXライブラリのバージョンです。
2015/06/21追記
上のlibファイルの個数ですが、
かげさんが検証した時とは現在違って増えているみたいです。
詳細は、実際にreadme.txtを参照してください。
実は、DXライブラリの3.14cとそれ以前だと
DXライブラリの中の構成が結構変わっているみたいで
3.14cからは、~_vs2012_x86.libという類のlibが大量に増えています。
(過去バージョンのDXライブラリのフォルダ比較で確認しました)
どうやらこれが原因で競合が起きているみたい。
なお、2015/06/20時点ではDXライブラリは3.14cではなく
3.14dを使った方が良いです。
3.14dだと前の記事で書いた2013だと動かない
という問題も解消されます。
(が、かげさんがハマっていた段階では3.14dは公開されていなかった)
ということで、かげさんところの
「プロジェクトに追加すべきファイル_VC用」フォルダを
Effekseerのサンプルにあった
「プロジェクトに追加すべきファイル_VC用」フォルダに
ごっそり入れ替えて実行!
すると
やりました!
実は、かげさん、寝る直前にここまで確認した関係で
テンションが上がりすぎて、全然眠れませんでした・・・
さすがに翌日の仕事に影響しそうで
思わず精神安定剤を飲んで寝たくらいです。
かげさんにとっては、そのくらいの事件だったのです!
そして
「Effekseerを使うにあたっての疑問」につながるのでした。
| 【固定リンク】 | 【コメント (0)】 | 【トラックバック (0)】
このエントリーへのリンク
トラックバック
この記事へのトラックバックの一覧です: Effekseerの導入に当たって調べた長い道のり?3:
コメント
このブログの新着コメントをRSSリーダに登録する為のxml