2014-07-24 27 views
11

Visual Studio 2012 çözümüm C# projeleri, VB.NET projeleri, C++/CLI projeleri ve C++ projeleri içeriyor. Şu anda üç platformum var: x86, x64 ve Win32. x64 eklediğimde, tüm projeler tarafından kullanıldığını fark ettim. Win32'u kaldırabilmek için x86 ile aynı şeyi yapmak isterim.C++ projelerinde x86 platformunu kullan

Yapılandırma Yöneticisi'ne gittim, bir C++ projesi seçtim ve platform açılan kutusunda yalnızca seçeneklerim vardı: Win32, x64, Yeni ve Düzenle. New'u seçtiyseniz, kullanılabilir tek seçenek ARM.

Yani'u x86 ile .vcxproj'da değiştirmeyi düşündüm. Çalışmadı (varsayılan olarak x64). Sonra .sln dosyasına baktım ama x64'ün her proje için nasıl çalışacağını göremedim.

+0

WIN32 bir API değil bir platformdur. En azından aynı anlamda x86 ve x86_64'tir. –

+1

Roma'da ... http://i.imgur.com/pMdq3Y5.png –

+0

"Win32", "x86" (x64) ile aynı şeydir. Visual Studio'daki yapılandırmaların varsayılan adları "Win32" (x86 32 bit), "x64" (64 bit) ve "ARM" (Windows RT 32 bit) şeklindedir. –

cevap

11

IDE'ler 32 bit kod için ortak bir platform adı almak için çok fazla farklıdır. Aksi halde, yönetilen kodun yansıtıcısı, C++ kodundan oldukça farklıdır. Yönetilen proje platformu adları sadece AnyCPU, x86, x64 olabilir. C++ proje platformu adları sadece Win32, x64 ve ARM olabilir. Geçmiş bir rol oynar, Win32, Windows NT'nin 32 bitlik sürümü winapi'yi tanıttığında, 1990'ların başından beri gelir. 16 bit sürümünden ayırt edilir. Mevcut projeleri kırma riski olmaksızın bir daha asla değiştirmek için gerçek bir fırsat yoktu.

Yönetilen projeler için x86 platform adı da tam olarak standart değildir; bu, VS2010'da miras kaldığınızı düşündüğünüz bir hataydı. VS2012, eski VS sürümlerinde olduğu gibi AnyCPU platform adıyla yeni projeler yaratır. Yönetilen kod için gerçek platformu oldukça doğru bir şekilde tarif eden, jitter sayesinde herhangi bir şekilde çalışır. Ad, aksi halde ilgisizdir, yalnızca Project + Properties, Build sekmesi ayarları, çalışma zamanında kullanılacak belirli bir jitter'i zorlamak için önemlidir. Başka bir deyişle, eğer x86'u zorlamıyorsanız, programınız x86 olduğu halde, programınız 64 bitlik bir işlem olarak çalışacaktır. VS2010 hatasıydı, çok fazla sefalete neden oldu.

Yani bu işte oldukça takıldınız. Bu gerçek bir sorun değil, IDE bu karışımı gayet iyi halledebilir. Build + Configuration Manager iletişim kutusunu zaten biliyorsunuz, Build + Build kullandığınızda veya F5 tuşuna bastığınızda hangi platformların oluşturulacağını net bir şekilde gösteriyor.

+0

Tamam, bu yüzden Win32'den kurtulmam. Bu sıkıntının kaynağına geri dön: Win32’u buradan seçilmekten sakınmanın bir yolu var mı (resme bakın)? Bazen VS berbat ve Win32 seçilir ve garip derleme hataları oluşur. http://i.imgur.com/p8AJHOO.png –

+0

Açılan kutuyu kaldırmak için Araçlar + Özelleştir'i kullanın, böylece VS bu hatayı yapamazsınız. –

+0

Ama x86 veya x64 seçmek için bu combo'ya ihtiyacım var. Ve gerçekten VS, ben değil. Bir proje kaldırdığımda, düzenlediğimde ve yeniden yüklediğimde (genellikle, bina bittiğinde msbuild hedeflerini çağırmak için bunu yaparsanız) olma eğilimindedir. –