Re: Releaseにすると ( No.1 ) |
- 名前:お父さん 日時:2008/01/09 00:02
inaba0923さん、こんばんは
私は、VisualC++のほうはあまり使いませんので、よくわかりませんが、他のスレッド(KeyInputStringで)での
管理人様の回答に、
今回のバージョンからプロジェクトで使用するランタイムライブラリを
デバッグビルド時は マルチスレッド デバッグ(/MTd) を
リリースビルド時は マルチスレッド(/MT) を
使用するように設定する必要がありますので、お手数ですがご変更の程お願い致します
とありますので、このあたりをチェックされるといいのではないでしょうか?
|
Re: Releaseにすると ( No.2 ) |
- 名前:inaba0923 日時:2008/01/09 12:31
お父さんさん、回答ありがとうございます
変更してリビルドしてみたのですが、
やはりダメでした
ウインドウは表示されるのですが、それ以上動かず、
応答なしで強制終了するしかなくなってしまいます
|
Re: Releaseにすると ( No.3 ) |
- 名前:お父さん 日時:2008/01/09 20:40
そうですか。だめでしたか。残念ながら私には今のところもうわかりませんが、お使いの環境(OS、コンパイ
ラの種類、DXLibraryはVC用かBCC用かなど)をお書きになったうえ、短いプログラムならそのまま掲示板に貼り
付けてみられてはいかがでしょうか。
もっと詳しい情報がわかれば、上級者の方から適切なアドバイスがいただけるかもしれません。
頼りない回答でどうもすみません。
|
Re: Releaseにすると ( No.4 ) |
- 名前:inaba0923 日時:2008/01/09 22:29
OSはWindowsXPのHE
コンパイラはVC++2005
DXLibはVC用です
プログラムはそれなりに長いのでここには書けませんが、
他のプログラムを書いてみたところReleaseでもうまく動作したので、
ますます原因がわかりません
情報はあまりないですが、もし何か心当たりがある方がいらっしゃれば
アドバイスよろしくお願いします
|
Re: Releaseにすると ( No.5 ) |
- 名前:crow 日時:2008/01/09 22:41
横から失礼します。
Debugビルド時は、未初期化の変数が一定の値になったり、
配列などのメモリが多めに取られたりするようですが、
Releaseビルド時はそれがありません。
ですから、プログラムにアクセス違反などのバグが潜んでいても
Releaseビルドするまで気付かないことがあります。
フリーズするという症状から考えて、
おそらくはアクセスしてはいけない物にアクセスしている可能性が高いと思います。
もう一度、プログラムをよく確認してみてください。
|
Re: Releaseにすると ( No.6 ) |
- 名前:EMIYA 日時:2008/01/10 06:33
VCを使っているのなら、F10かF11で一行ずつ?実行できますよ。
それを使って、変数の値がおかしな所を探していけば結構解決したりしますよ。
ちなみに、F10だと関数の中にはいかず、F11だと関数の中までいくというところです。
応答なしということは、何かしらが原因で無限ループに陥っているなどですかね?
crow様のいうように未初期化などが関わっているかもしれませんので、
ループ条件に使われている変数が未初期化などで正常にループされていないのかもしれません。
|
Re: Releaseにすると ( No.7 ) |
- 名前:通 日時:2008/01/10 09:44
EMIYAさんが言っている機能を「ステップ実行」とか
言いますが、Debug版で実行すば、コードを平行して
見ることが可能ですが、Release版ではアセンブリ
コードまでしか見ることができませんので、
今回のようなケースでは少し厳しいかもしれません。
可能性的にはcrowさんが書いている場合が
かなり高いです。
どこまで実行されているのかや、ファイルなどに
ログを出力してある程度場所を限定しなければ
成りません。ログの機能はDXライブラリにあります
が面倒であればメッセージボックスをところどころ
入れて見るというのも手だと思います。
これが出来れば、コードを限定できるので
BBSにも質問しやすいかと。
|
Re: Releaseにすると ( No.8 ) |
- 名前:inaba0923 日時:2008/01/10 16:58
crowさん、EMIYAさん、通さん、回答ありがとうございます
crowさんの言うとおり、初期化していない変数へのアクセスが問題でした
DebugのときとReleaseのときでそんな違いがあるとは知りませんでした
みなさん本当にありがとうございました
|