2016-09-28 2 views
0

私は、内部アプリケーション用にオープンソースプロジェクトを使用しています。 楔形のlinux ocrエンジンです。 これをデバッグモードでビルドすると、ビルドは完全に機能します。 一部の画像では、フィードバックビルドがハングアップします。visual C++リリースビルドを強制します。デバッグビルドコードを使用します。

リリースビルドでデバッグビルドコードが使用されていることをコンパイラフラグを変更することはできますか? ifdefとifndefの設定をコード内で編集しようとしましたが、成功しませんでした。

私はC++の基本スキルだけを持つC#開発者です。

私がリリースビルドを使用する主な事実は、インストールされているサーバーがmsvC++ランタイムのみを使用することです。デバッグDLLはビジュアルスタジオインストールによってのみ提供されます。

よろしく インゴ

+0

デバッグビルドを有効にすることができるリリースバージョン用にコンパイルしている間に、コードが完全にチェックされている可能性があります。 – Stubborn

答えて

1

これはunadvisableです。この状況では(デバッグは正常に実行され、リリースは実行されません)、初期化されていない変数のどこかに落ちる傾向があります。アサーションをコード全体に配置して、開発者のサニティチェック(アサーションは通常、リリースビルドの一部としてコンパイルされませんが、デバッグビルドの一部です)に配置して、このような条件をチェックすることをお勧めします。

デバッグビルドには、デバッガがそれにフックできるようにするために、コードに余分なシンボル情報と値のより厳密な割り当てが多く含まれています。これは、コンパイラがデバッガの変数を正しく初期化しないため、正しく初期化されないと未定義の動作が発生することがあるため、このような問題を緩和することがあります。したがって、リリースビルドはデバッグ時には動作しません。

+1

さらに、Visual Studioのライセンス条項では、ライブラリの "リリース"バージョンのみを自由に再配布できます。デバッグライブラリは使用できますが、アプリケーションのデバッグにのみ使用できます。 – TripeHound

+0

@TripeHoundそれは私がデバッグビルドを使いたくないという事実です! – user1688566

+0

@Ifgtmこのチップをありがとう!私は、初期化されていない変数についていくつかの警告があることを知っています...私はそれをチェックします – user1688566

関連する問題