5

Il mio progetto è in fase di compilazione ed esecuzione OK in modalità debug e release in VS 2010. Oggi ho provato a compilarlo con VS 2012 e ho ricevuto questo errore:Compilare un'app MFC da Visual Studio 2010 a 2012 Risultati RC in LNK2038

1> Generating Code... 
1>pcrecppd.lib(pcrecpp.obj) : error LNK2038: mismatch detected for '_MSC_VER': 
value '1600' doesn't match value '1700' in NamesEditorDlg.obj 

Ho cercato "_MSC_VER" nel codice ma non ho trovato nessuna corrispondenza. Né ho potuto trovare "1600" o "1700".

Quindi mi chiedo come posso risolvere questo problema.

+0

Hai appena copiato i file in cartelle 2012 o creato un nuovo progetto e importato? –

+0

Ho copiato i file. – Wartin

+0

_MSC_VER è una macro predefinita, quindi è incorporata e non la troverai nelle fonti. (Apparentemente il suo valore è 1600 in VS2010 e 1700 in VS2012.) Hai copiato qualche file binario, qualcosa di intrinseco a VS2010, file oggetto compilati? Sei sicuro che il nuovo compilatore non stia tentando di accedere alle vecchie librerie? I nuovi progetti creati con VS2012 vengono compilati? –

risposta

5

Sembra che tu stia utilizzando un .lib da vc2010 in vc2012 (sembra una libreria PCRE). Avrai bisogno di ricompilare tutti i .libs o il link di runtime con le DLL (es. LoadLibrary, GetProcAddress ecc.).

1

Cercare su http://msdn.microsoft.com/en-us/library/b0084kay.aspx Sembra che la variabile contenga il numero di versione del compilatore. Penserei che il modo migliore per risolvere il problema sarebbe quello di creare un nuovo progetto nel 2012 e aggiungere i file sorgente al nuovo progetto.

0

NO, tutto ciò che serve è controllare le proprietà del progetto. Esiste il collegamento ai vecchi file di progetto. È necessario aprire le proprietà del progetto nella pagina ".NET Framework e collegamenti" in modo che non tutti i collegamenti aggiungano nuovi per i nuovi file di progetto 2012.

3

In Proprietà progetto, selezionare Generale, quindi modificare l'impostazione "Strumenti della piattaforma" su "Visual Studio 2010 (v100)." Dopo averlo fatto, il mio codice è stato compilato bene con le librerie originali.

+0

e viceversa, se il problema è compreso tra 1700 e 1600 (anziché tra 1600 e 1700 come nella domanda), è possibile fare l'opposto. Per http://stackoverflow.com/questions/19575747/error-lnk2038-mismatch-detected-for-msc-ver-value-1600-doesnt-match-valu – metao

Problemi correlati