Domanda

    

Questa domanda ha già una risposta qui:

         

Sto costruendo un progetto in Visual C ++ 2008, che è un app esempio MFC-based per una libreria statica classe C ++ userò nel mio progetto al più presto. Mentre la costruzione della configurazione di debug, ottengo il seguente:

  

warning LNK4098: defaultlib conflitti 'MSVCRT' con utilizzo di altre librerie; uso / NODEFAULTLIB: libreria

Dopo aver usato l'opzione raccomandata (con l'aggiunta di "msvcrt" al campo "Ignora libreria specifica" nelle impostazioni del linker di progetto per la configurazione di debug), i collegamenti di programma e funziona bene. Tuttavia, mi piacerebbe scoprire perché questo conflitto si è verificato, perché devo ignorare una biblioteca critica, e se sono ad aspettarsi problemi in seguito ho se aggiungo la ignorano, o che cosa succede se non lo faccio (perché il programma si basa in ogni caso).

Al tempo stesso, la configurazione di rilascio avverte:

  

LNK4075 avvertimento: ignorando '/ EDITANDCONTINUE' a causa di '/ OPT: ICF' specifica
  avviso LNK4098: defaultlib conflitti 'MSVCRTD' con utilizzo di altre librerie; uso / NODEFAULTLIB: libreria

Sto indovinando che il suffisso "D" significa che questo è la versione di debug del runtime VC ++, idea del perché questo si abitua questa volta. In ogni caso, aggiungendo "msvcrtd" al campo di ignorare le provoca un sacco di errori di collegamento del modulo:

  

errore LNK2001: simbolo esterno non risolto __imp ___ CrtDbgReportW

Tutta la comprensione molto apprezzato.

È stato utile?

Soluzione

Questo di solito accade quando si collega contro una libreria statica che utilizza un'altra versione del runtime VC ++ (impostazione C++ ->Code Generation->Runtime Library nelle proprietà del progetto).

Altri suggerimenti

Questo di solito è successo a me quando ero (involontariamente) mescolando diverse sapori della RTL, come (come sembra essere nel tuo caso) Debug e Release o MT e ST.

scroll top