Domanda

Ho un modello di VS .NET progetto del 2003, che i colleghi Copia e personalizza quando si sviluppa il loro software.

Sembra che il modello è stato modificato un po 'indietro per impostare la proprietà IgnoreSpecificLibrary avere LIBCMT.LIB sia per il rilascio e build di debug (vale a dire sia per il rilascio e il debug, la build dovrebbe ignorare LIBCMT.LIB nel linker).

Alcuni progetti basati su questo da allora sono stati costruiti, con la build di rilascio tirando in LIBCMTD.LIB (evidente guardando attraverso file di progetto MAP), che sembra aver causato alcuni problemi di esecuzione (ad esempio una finestra di dialogo essere balenato come se un punto di interruzione era stata fissata).

La regolazione IgnoreSpecificLibrary di escludere LIBCMT.LIB automaticamente rendere il collegamento al progetto contro LIBCMTD.LIB?

Ciò che è strano è che la costruzione del modello (con l'impostazione errata) Link contro LIBCMT.LIB considerando che alcuni dei progetti personalizzati (anche se non tutti) Link contro LIBCMTD.LIB.

Tutte le idee?

È stato utile?

Soluzione

Questo è quello che è successo:

Dopo aver compilato il linker prende l'oggetto-files e creare, tra gli altri una tabella dei simboli, che ha symol-richiesta che non sono stati fullfilled. Poi il linker passa attraverso la vostra lista di librerie che cercano risolvere tali simboli unfullfilled. Dal momento che si ignora LIBCMT.LIB, la libreria di terze parti ha lasciato o aggiunti alcuni simboli irrisolti e contiene una richiesta di linker per risolvere quelli licmtd.lib (e forse altre librerie pure), dal momento che è stato compilled opzione debug con.

Se non avessi ignorato LIBCMT.LIB quei simboli sarebbe molto probabilmente essere risolto da LIBCMT.LIB e non c'era alcun bisogno di tirare in roba da LIBCMTD.LIB (anche se sarebbe guardato per risolvere altri simboli che erano ancora unfullfilled)

Si può tentare di igmore LIBCMTD.lib anche. Se ora si ottiene esterni IRRISOLTO poi era probebly non una buona idea di ignorare libcmt.dll.

Altri suggerimenti

Molti progetti ignorano il LIBCMT.LIB, perché in conflitto con la versione dinamica Msvcrt.lib. Ignorando LIBCMT nel linker rendere il progetto di compilazione con msvcrt.lib

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top