- ベストアンサー
リリース実行やExe実行で動作が異なる
質問です。 Microsoft Visual Studio 2008 Professional Edition - JPN Microsoft DirectX SDK (August 2007) 上記の環境で開発を行っているのですが、 Debug実行、Release実行、Exe実行で動作ができなくなることが あるのですが、原因はなんなんでしょうか? ご教授御願い致します。 特にコンパイル環境の設定を変更したわけではなく、 リリース環境も"最大限に最適化"のみとなっています。 フォルダパス等も間違っておらず、DirectXの描画が不正となります。 基本的にDebug実行では、問題なく、リリース環境とExe実行に問題が発生します。 原因は、環境構築の違いからくるものだと思うのですが、 解決するには、どうすればよいのでしょうか? また、他の問題があるのでしょうか? 宜しく御願い致します。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
リリース環境のみに起こるバグというのはよくあることです。 そういう場合、releaseビルドでもファイルにログを出力したり、WindowsならOutputDebugStringで 追跡できるようにしておくとよいでしょう。 (define1つでログ出力のオン/オフが出来るようにしておくと便利です。) >DirectXの描画が不正となります 上記の方法でログをとりHRESULTの値等がどうなっているか調べてください。
その他の回答 (3)
- zwi
- ベストアンサー率56% (730/1282)
100%バグでしょうね。 想定外のメモリ領域の内容を破壊している可能性が高いのでは? ポインタや配列の処理を見直してみたほうが良いです。
お礼
お返事ありがとうございます。 バグですか・・・ ポインタや配列を多様してますので、再度見直しています。
- machongola
- ベストアンサー率60% (434/720)
こんばんは。 テクスチャーが読み込めないのでしょうか。パスの方は本当に完全でしょうか。 ロードするファイルへのパスの指定にGetCurrentDirectory()を使用していますでしょうか。 例えば、 //此れを使って初期化する static const CString InitCurrentPath() { TCHAR buf[MAX_PATH]; ::GetCurrentDirectory(MAX_PATH, buf); return buf; } //何処かのヘッダで宣言する extern const CString CStrMaxPath; //何処かで一回だけ初期化する const CString CStrMaxPath = ::InitCurrentPath(); テクスチャーをロードする時、 //sFileNameをロード用関数に渡す const CString sFileName = CStrMaxPath + "\\" + "myTexture.dds"; と言った具合になっていますでしょうか。
お礼
お返事ありがとうございます。 確認いたしましたが、やはりパスは問題ないようです。 どうやら処理に問題がありそうなので、見直すことにします。
9割8分くらいは自分の書いたコードが間違っているのが原因 デバッガ使って追っていきましょう
お礼
お返事ありがとうございます。 デバッガを使って処理を見直してみます。
お礼
お返事ありがとうございます。 上記のOutputDebugStringで処理を見直してみます。