0

いくつかのプロジェクトで構成され、dllとそのヘッダーを使用するVisualStudio2008ソリューションがあります。デバッグバージョンでは、それ(ソリューション)は本当にうまく機能します。また、リリースバージョンでは正常にコンパイルされますが、dllファイルで定義されている一部の関数を実行すると失敗します。

私が言ったように、ソリューションはデバッグモードで正常に動作し、オプションは適切に設定されます。最適化をオフ
にし、デバッグ情報をオンにしてみましたが、役に立ちませんでした。問題の原因は何ですか?

4

1 に答える 1

0

私はこれが以前に何度も起こるのを見ました。ほとんどすべての場合、問題は、配列または他のデータ構造に書き込むときの範囲外のエラーであることがわかりました。その他の場合、初期化されていない変数が使用されていました。

コードにバグがあります。それは確かです。デバッグ設定でビルドすると、コンパイラは特定の種類の問題を隠すために多くのことを行います。コンパイラは、初期化されていない変数の問題をマスクして、いくつかのものをゼロで初期化するコードを記述します。

私が最初に試したのは、警告レベルを最高の設定に上げることです。とにかくこれを常に行う必要があります。これにより、問題が明らかになることがよくあります。コンパイラが教えてくれる問題を必ず修正してください。#pragmasや更紗のキャストでそれらをマスクしないでください。次のステップでコードを実行し、問題を特定します。これは困難で時間がかかる場合がありますが、銀色の裏地があります。問題が何であれ、その間違いを繰り返す可能性は、バグを特定して修正するのにかかる時間と困難さに反比例します。:)

于 2012-10-09T13:56:42.337 に答える