/*!

\page configuring_project Configuring Your Project's Build Settings

\section link Include and Lib Directories

At this point you should have the CrashRpt source code compiled as described in
\ref compiling_crashrpt. 

To let your Visual C++ compiler and linker know about the
location of CrashRpt include and lib files, do the following.

In Visual Studio window, open Tools->
Options->Projects and Solutions->VC++ Directories.
- In the 'Show directories for' combo box, select 'Include files', then add 
  the path to <i>[CRASHRPT_HOME]\\include</i> directory to the list.
- In the 'Show directories for' combo box, select 'Library files', then add 
  the path to <i>[CRASHRPT_HOME]\\lib</i> directory to the list.

Here <i>[CRASHRPT_HOME]</i> should be replaced with the actual path of the 
directory you unzipped CrashRpt distribution to.

\note In previous versions, include files were stored in <i>[CRASHRPT_HOME]\\CrashRpt\\include</i>.
<b>Since v1.2.0</b>, all include files are stored in <i>[CRASHRPT_HOME]\\include</i> directory.

Before you start using CrashRpt API functions in your program, do not forget to include 
\c CrashRpt.h header file in the beginning of your code: 

\code
// Include CrashRpt header
#include "CrashRpt.h"
\endcode

You also need to add CrashRpt LIB file to the list of input libraries for your project.
In the Solution Explorer window, right-click your project and choose Properties item from the
context menu. Then open Configuration Properties->Linker->Input->Additional Dependencies 
and then add \b CrashRpt.lib to the list of libraries. 

\section crtdll Using CRT as Multi-Threaded DLL (/MD) in Release Configuration

It is important that you configure your project to use C runtime libraries (CRT)
as Multi-threaded DLL (/MD) for Release configuration. This is the way recommended in MSDN.
See the \ref crt_version_and_dll for more information.

In the Solution Explorer window, right-click your project and open project Properties. 
Then choose Configuration Properties->C/C++->Code Generation. In the <b>Runtime Library</b> field,
choose <b>Multi-threaded DLL (/MD)</b>. See the figure below for example.

This should be done for all projects in your solution to share single CRT DLL.

\note 

In Debug configuration it is not important what CRT linkage you use. Typically  
your default debugger intercepts exceptions instead of CrashRpt in Debug configuration.

\image html crtdll.png "Multi-threaded DLL (/MD)"    

\section crtver Using the Same Version of CRT for All Application Modules

Ensure that all modules that exist in your application use the same version of CRT. 
If some dependent modules were compiled using an older version of CRT, you should recompile them 
to ensure the single version or CRT DLL is used. 

For example, assume you use Visual Studio 2005 and CRT 8.0 linked as DLL, but some dependent module in your 
application was compiled in Visual Studio .NET 2003 and uses CRT 7.1 linked as DLL. 
In such situation a CRT error in the dependent module won't be intercepted by CrashRpt, because error handlers 
are installed by you program for CRT 8.0 only. 

\section prgdb Enabling Program Database (/Zi, /DEBUG) in Release Configuration

To get the most out of the crash minidump, the debugger needs your application's debug 
symbols. By default Release builds don't generate debug symbols. 

-# In the Solution Explorer window, right-click your project and open project Properties. 
Then choose Configuration Properties->C/C++->General. In the <b>Debug Information Format</b> field,
choose <b>Program Database (/Zi)</b>.
-# Choose Configuration Properties->Linker->Debugging. In the <b>Generate Debug Info</b> field,
choose <b>Yes (/DEBUG)</b>. 

Steps 1 and 2 should be done for all projects in your solution that support program database 
(EXE, DLL).

The steps 1 and 2 are presented on the figures below.

\image html program_database.png "Program Database (/Zi)"

\image html linker_debug_settings.png "Enabling Debugging Information in Linker"

\section configure_prj_faq FAQ

<b>Does using crashrpt makes it easier for somebody to reverse engineer my code?</b>

Actually not. To use CrashRpt you enable program database generation in Release 
configuration (/Zi compiler flag and /DEBUG linker flag) and this generates .PDB file 
for your project. PDB file contains information that can be used to reverse engineer 
your code, however you typically store it locally and do not distribute with your 
software release package. So, using crashrpt doesn't affect the difficulty of reverse 
engineering your code. 

*/
