リリースモードとデバッグモード – プログラミング – Home

リリースモードとデバッグモード
 
通知
すべてクリア

[解決済] リリースモードとデバッグモード


mua
 mua
(@mua)
ゲスト
結合: 23年前
投稿: 26
Topic starter  

win2000 MFC VC++6.0

皆さんにお聞きしたいのですが、
デバッグモードでビルドして、できた実行ファイルはうまく動くのですが、
リリースモードでビルドして、できた実行ファイルはエラーがでてきます。
メモリがreadになることはできませんでしたと出ます。(ダイナミックリンクの場合)

スタティックリンクの場合は逆で、
デバッグモードでは、エラーがでるのですが、
リリースモードでは、ビルドでエラーはでません。
しかし、ファイルへの出力結果がおかしくなります。
0に1を加えて1にしたいのに、4とか期待はずれの結果となります。

デバッグモードやリリースモード、ダイナミックやスタティックリンクを変更すると、
なぜ、エラーが出てきたり、実行結果が変わったりするのでしょうか。


引用未解決
トピックタグ
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

a.) 本来問題がある行為を行っているが,たまたまデバッグモード(or リリースモード)で動いている
b.) リリースモードの最適化の結果間違ったコードをコンパイラが吐きだした

のどちらかです。
まずはa.を疑ってみるのがよいでしょう。


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

 デバッグ時にのみ実行可能となるTRACE文の中に実際必要としているコーディングをして
しまっているとか。リリースビルド時にはそっくり消えてしまう。

こん!<=^・^=>


返信引用
tib
 tib
(@tib)
ゲスト
結合: 23年前
投稿: 468
 

.libと.dllでバージョンが一致していない、とか。


返信引用
PAI
 PAI
(@PAI)
ゲスト
結合: 23年前
投稿: 359
 

初期化してない変数の値に依存した部分がある、とか。


返信引用
mua
 mua
(@mua)
ゲスト
結合: 23年前
投稿: 26
Topic starter  

> 0に1を加えて1にしたいのに、4とか期待はずれの結果となります。
この問題は
> 初期化してない変数の値に依存した部分がある、とか。
で解決できました。

ひとつ質問ですが、ビルドを行うとDebugやReleaseのフォルダが作成されますが、
その中に、exeの実行ファイルと.objや.idbなどの中間ファイルもあります。
これはビルドが正常に終了していないためでしょうか。
それとも、中間ファイルはフォルダ内に残ったままになるのでしょうか。


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

残ります。
じゃないと次にビルドする時にまた全てコンパイルしなければならなくなってしまうのでは?

こん!<=^・^=>


返信引用
mua
 mua
(@mua)
ゲスト
結合: 23年前
投稿: 26
Topic starter  

warning LNK4098: defaultlib MSVCRT は他のライブラリの使用と競合しています;
/NODEFAULTLIB:library を使用してください

というようなエラーがでましたが、意味がわかりません。
どういうことなのでしょうか。
ライブラリを変更しろってことですか。
デバッグモードやリリースモード、ダイナミックやスタティックリンクを変更すると、
エラーがでるのは、このせいでしょうか。


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> warning LNK4098: defaultlib MSVCRT は他のライブラリの使用と競合しています;
> /NODEFAULTLIB:library を使用してください

> というようなエラーがでましたが、意味がわかりません。
> どういうことなのでしょうか。

取り敢えずエラーじゃないですね。ワーニングです。
MSDNでLNK4098を検索して読んでみましょう。

こん!<=^・^=>


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

標準のライブラリ以外のライブラリを使っているときは,
作成したライブラリに使用するCRTを合わせる必要が出てきます。

> /NODEFAULTLIB:library を使用してください
これは単なる対処療法ですから,根本から設定を変更した方がよいです。


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> これは単なる対処療法ですから,根本から設定を変更した方がよいです。

 確かにその通りなのですがね。muaさんはいろいろ設定をいじりたおして何かを試している様
ですが結局何をされているのでしょうか?そろそろプロジェクトの内容を明かしていただけると
皆さん幸せになれるかなと思うのですが?

こん!<=^・^=>


返信引用
mua
 mua
(@mua)
ゲスト
結合: 23年前
投稿: 26
Topic starter  

> デバッグモードやリリースモード、ダイナミックやスタティックリンクを変更すると、
> なぜ、エラーが出てきたり、実行結果が変わったりするのでしょうか。
いろいろ試してみましたところ、ソースに根本的なエラーがありました。
ビルドをしたときはエラー数は0で、教えてもらえませんでした。
デバッグしたときに、エラーを発見できました。
あと、警告レベルを4にして、警告を全て対処いたしましたところ、
デバッグモードやリリースモード、ダイナミックやスタティックリンクに関係なく、
実行ファイルを無事に実行することができました。

アドバイスくださった皆様には、感謝いたします。


返信引用
こん!
 こん!
(@こん!)
ゲスト
結合: 23年前
投稿: 49
 

> いろいろ試してみましたところ、ソースに根本的なエラーがありました。

 出来ましたらその具体的な内容も教えていただけると後々同じ状況になった方の道標となれる
かも。

こん!<=^・^=>


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました