2014-07-24 28 views
11

La mia soluzione di Visual Studio 2012 include progetti C#, progetti VB.NET, progetti C++/CLI e progetti C++. Attualmente, ho tre piattaforme: x86, x64 e Win32. Quando ho aggiunto x64, ho notato che era utilizzato da tutti i progetti. Mi piacerebbe fare lo stesso con x86, in modo da poter rimuovere Win32.Utilizzare la piattaforma x86 in progetti C++

Quindi sono andato a Configuration Manager, selezionato un progetto C++ e nella casella combinata della piattaforma avevo solo le opzioni: Win32, x64, Nuovo e Modifica. Se ho selezionato New, l'unica opzione disponibile è ARM.

Quindi ho pensato di sostituire solo Win32 con x86 nel mio file .vcxproj. Non ha funzionato (per impostazione predefinita è x64). Poi ho guardato il file .sln, ma non ho visto come x64 riesca a funzionare per ogni progetto.

+0

WIN32 è un'API non una piattaforma. Almeno non nello stesso senso di x86 e x86_64. –

+1

Quando a Roma ... http://i.imgur.com/pMdq3Y5.png –

+0

"Win32" è la stessa cosa di "x86" (x64). I nomi predefiniti delle configurazioni in Visual Studio sono "Win32" (x86 a 32 bit), "x64" (64 bit) e "ARM" (Windows RT a 32 bit). –

risposta

11

Gli IDE sono troppo diversi per ottenere un nome di piattaforma comune per il codice a 32 bit. Altrimenti, la riflessione del codice gestito è fondamentalmente diversa dal codice C++. I nomi delle piattaforme di progetti gestiti possono essere AnyCPU, x86, x64. I nomi delle piattaforme di progetto C++ possono essere solo Win32, x64 e ARM. La storia ha un ruolo, Win32 viene dai primi anni '90, quando Windows NT ha introdotto la versione a 32 bit di Winapi. Distinto dalla versione a 16 bit. Non c'era alcuna reale opportunità di cambiarlo di nuovo senza rischiare di rompere i progetti esistenti.

Il nome della piattaforma x86 per i progetti gestiti non è esattamente standard, si è trattato di un errore in VS2010 che sembra aver ereditato. VS2012 crea nuovi progetti con il nome della piattaforma AnyCPU come facevano le vecchie versioni di VS. Che descrive abbastanza accuratamente la vera piattaforma per il codice gestito, funziona su qualsiasi grazie al jitter. Il nome è altrimenti irrilevante, solo le proprietà Project + Properties, Build sono importanti per forzare un jitter specifico da utilizzare in fase di runtime. In altre parole, se non si forza x86, il programma verrà eseguito come un processo a 64 bit, anche se il nome della piattaforma è x86. Questo è stato l'errore VS2010, che ha causato molta sofferenza.

Quindi sei abbastanza bloccato con questo. Non è un vero problema, l'IDE può gestire il mix bene. Sapete già della finestra di dialogo Build + Configuration Manager, mostra in modo inequivocabile quali piattaforme verranno create quando utilizzate Build + Build o premete F5.

+0

Ok, quindi non posso sbarazzarmi di Win32. Torna alla fonte di questo fastidio: c'è un modo per impedire a Win32 di essere selezionato qui (vedi immagine)? Perché a volte VS si incasina e viene selezionato Win32 e ne derivano strani errori di compilazione. http://i.imgur.com/p8AJHOO.png –

+0

Usa Strumenti + Personalizza per rimuovere la casella combinata in modo che tu non possa fare in modo che VS commetta l'errore. –

+0

Ma ho bisogno di quella combinazione per selezionare x86 o x64. Ed è davvero VS, non io. Tende ad accadere quando scarico un progetto, lo modifico e lo ricarico (di solito lo faccio per chiamare gli obiettivi di msbuild quando lo sviluppo è terminato) –

Problemi correlati