2009-05-29 4 views

risposta

6

Esse specificano che runtime da utilizzare. Entrambi utilizzano runtime a threading (DLL) mmulti-threaded, ma la versione/MDD utilizza la versione di debug e definisce anche il simbolo _DEBUG per te. Vedi this MSDN page per i dettagli.

+0

quindi nulla differente utilizzando uno qualsiasi (corretto ??) – Cute

+0

No, c'è una differenza. Se si sta eseguendo una versione di rilascio, in genere si utilizza/MD se si esegue una build di debug, si utilizza/MDD –

+3

L'allocazione/rilascio di memoria viene gestito in modo diverso nella DLL di debug e rilascio. Non si deve mescolare e abbinare in quanto porterà a brutti effetti collaterali. –

3

La versione di debug (MDD) consente di accedere alle librerie C e C++ durante il debug. Ci sono controlli aggiuntivi per operazioni heap non corrette e perdite di memoria. Avere dipendenze (ad esempio DLL) sia nelle versioni di rilascio che di debug può portare a problemi, quindi è consigliabile attenersi a/MDD per la versione di debug e/MD per le versioni di rilascio.

Per Visual Studio 2005/2008, se l'applicazione utilizza/MDD, ma dipende dalle DLL create con le librerie di rilascio, sarà inoltre necessario includere il manifest per le librerie di rilascio nelle impostazioni del progetto.

0

I programmi collegati con/MDd probabilmente non verranno eseguiti sulla maggior parte delle macchine utente, poiché è improbabile che le versioni di debug delle librerie standard siano installate su di esse.

0

Se si compila con/MDd in VS 2012 si ottiene la seguente dipendenza: MSVCP110D.dll.

L'installazione del pacchetto ridistribuibile di Visual C++ non fornirà questa DLL. Quindi, se si desidera distribuire l'eseguibile, la macchina di destinazione deve aver installato Visual Studio.

La compilazione con/MD, d'altra parte, darà una dipendenza da MSVCP110.dll, che è installato con il pacchetto ridistribuibile VS.

Correggetemi se sbaglio ..

Problemi correlati