• ベストアンサー

リリース実行やExe実行で動作が異なる

質問です。 Microsoft Visual Studio 2008 Professional Edition - JPN Microsoft DirectX SDK (August 2007) 上記の環境で開発を行っているのですが、 Debug実行、Release実行、Exe実行で動作ができなくなることが あるのですが、原因はなんなんでしょうか? ご教授御願い致します。 特にコンパイル環境の設定を変更したわけではなく、 リリース環境も"最大限に最適化"のみとなっています。 フォルダパス等も間違っておらず、DirectXの描画が不正となります。 基本的にDebug実行では、問題なく、リリース環境とExe実行に問題が発生します。 原因は、環境構築の違いからくるものだと思うのですが、 解決するには、どうすればよいのでしょうか? また、他の問題があるのでしょうか? 宜しく御願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.4

リリース環境のみに起こるバグというのはよくあることです。 そういう場合、releaseビルドでもファイルにログを出力したり、WindowsならOutputDebugStringで 追跡できるようにしておくとよいでしょう。 (define1つでログ出力のオン/オフが出来るようにしておくと便利です。) >DirectXの描画が不正となります 上記の方法でログをとりHRESULTの値等がどうなっているか調べてください。

hir0yuki
質問者

お礼

お返事ありがとうございます。 上記のOutputDebugStringで処理を見直してみます。

その他の回答 (3)

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.3

100%バグでしょうね。 想定外のメモリ領域の内容を破壊している可能性が高いのでは? ポインタや配列の処理を見直してみたほうが良いです。

hir0yuki
質問者

お礼

お返事ありがとうございます。 バグですか・・・ ポインタや配列を多様してますので、再度見直しています。

回答No.2

 こんばんは。  テクスチャーが読み込めないのでしょうか。パスの方は本当に完全でしょうか。  ロードするファイルへのパスの指定に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";  と言った具合になっていますでしょうか。

hir0yuki
質問者

お礼

お返事ありがとうございます。 確認いたしましたが、やはりパスは問題ないようです。 どうやら処理に問題がありそうなので、見直すことにします。

noname#208124
noname#208124
回答No.1

9割8分くらいは自分の書いたコードが間違っているのが原因 デバッガ使って追っていきましょう

参考URL:
http://msdn.microsoft.com/ja-jp/library/dykf6bx9.aspx
hir0yuki
質問者

お礼

お返事ありがとうございます。 デバッガを使って処理を見直してみます。

関連するQ&A