ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

原因判明

デバッグビルドでは動作するのにリリースビルドでは正しく動かない原因が分かった。
2つのプロジェクトからアプリケーションを生成しており、1つはライブラリ的なプロジェクトで、もう1つがアプリケーションの本体。一部の機能を切り替えるためにプリプロセッサ命令のdefineを使ってソースの内容を切り替えている。このプリプロセッサ定義がリリースビルドでは正しく定義されていなかったのがバグの原因。
同じヘッダファイルを参照していても、defineが異なるためにクラスのメンバ変数が変わり、インスタンスのメモリ内容も変わってしまう。その変化してしまった場所にアクセスしてエラーとなってしまっていた。
プリプロセッサの定義を正しく行って無事動作するようになった。
ただ、それぞれで定義を合わせないといけないこと自体が良くない。1箇所定義するだけで良いようにプロジェクトを書き換えないと。