Aracılığıyla paylaş


Visual Studio sürümleri arasında C++ ikili uyumluluğu

Visual Studio 2013 ve önceki sürümlerdeki Microsoft C++ (MSVC) Derleme Araçları, ana sürümler arasında ikili uyumluluğu garanti etmemektedir. Bu derleme araçlarının farklı sürümleri tarafından oluşturulan nesne dosyalarını, statik kitaplıkları, dinamik kitaplıkları ve yürütülebilir dosyaları bağlayamazsınız. ABI'ler, nesne biçimleri ve çalışma zamanı kitaplıkları uyumsuzdur.

Visual Studio 2015 ve sonraki sürümlerde bu davranışı değiştirdik. Derleyicinin bu sürümlerinden herhangi biri tarafından derlenen çalışma zamanı kitaplıkları ve uygulamaları ikili uyumlu. Visual Studio 2015'ten bu yana tüm sürümler için 14 ile başlayan MSVC Derleme Araçları ana numarasına yansıtılır. (Derleme araçları sürümü Visual Studio 2015 için v140, 2017 için v141, 2019 için v142 ve 2022 için v143 sürümüdür). Visual Studio 2015 tarafından oluşturulmuş üçüncü taraf kitaplıklarınız olduğunu varsayalım. Bunları Visual Studio 2017, 2019, 2022 veya 2026 tarafından oluşturulan bir uygulamada kullanmaya devam edebilirsiniz. Eşleşen bir sürümle yeniden derlemeye gerek yoktur. Microsoft Visual C++ Yeniden Dağıtılabilir paketinin en son sürümü (Yeniden Dağıtılabilir) hepsi için çalışır.

İkili uyumluluk kısıtlamaları

v140, v141, v142, v143 ve v145 derleme araçları ile küçük numaralı sürüm güncelleştirmeleri arasında ikili uyumluluk konusunda üç önemli kısıtlama vardır:

  • v140, v141, v142, v143 ve v145 derleme araçlarının farklı sürümleriyle oluşturulan ikili dosyalar birleştirilebilir. Temel kural, bağlayıcının yalnızca kendisi ile aynı sürümde (veya önceki sürümde) derleme araçları tarafından oluşturulan girişlerle çalışması gerektiğidir. Bu, LINK giriş dosyalarında açıklandığı gibi uygulamalar, içeri aktarma kitaplıkları, statik kitaplıklar ve diğer dosyalar için geçerlidir. Bazı durumlarda, özellikle içeri aktarma kitaplığı içeri/dışarı aktarmalar için katı bir şekilde kullanılıyorsa, derleme araçlarının daha sonraki bir sürümü tarafından oluşturulmuş bir örtük olarak bağlı DLL'nin içeri aktarma kitaplığı, derleme araçlarının daha önceki bir sürümü kullanılarak bağlanabilir. Tüm bunların ne anlama geldiğinin bazı örnekleri aşağıda verilmiştir:
    • 2017 derleme araçlarıyla derlenen bir uygulama (v141, sürüm 15.0 - 15.9) Visual Studio 2022 sürüm 17.8 (v143) ile derlenmiş bir statik kitaplığa bağlanabilir, ancak bağlamanın bir sürüm 17.8 veya üzeri derleme araçları kullanılarak yapılması gerekir.
    • VS 2015, 2017, 2019, 2022 ve 2026 kullanılarak oluşturulan uygulamalar ve kitaplıklar birbirine bağlanabilir, ancak bağlama, bağlayıcıya geçirdiğiniz ikili dosyalardan herhangi birini derlemek için kullanılan en son derleme araçları kadar yakın veya daha yeni derleme araçlarını kullanarak yapılmalıdır. Örneğin, VS 2015 sürüm 14.3, VS 2017 sürüm 15.9 ve VS 2019 sürüm 16.11'den derleme araçlarıyla oluşturulan üç ikili dosya verildiğinde, bunları 16.11 veya sonraki bir derleme araçları sürümünü kullanarak bağlayabilirsiniz.
    • Dll daha yeni derleme araçlarıyla oluşturulduysa, dışarı aktarmaların tümü C dili çağırma kuralına (extern "C" ) uyuyorsa, içeri aktarma kitaplığı bazen eski derleme araçlarıyla kullanılabilir. Ancak resmi olarak desteklenen tek durum, eski derleme araçlarıyla daha yeni bir Windows SDK'sı kullanılmasıdır.
  • Uygulamanızın kullandığı Yeniden Dağıtılabilir,benzer bir ikili uyumluluk kısıtlaması vardır. Derleme araçlarının desteklenen farklı sürümleri tarafından oluşturulan ikili dosyaları karıştırdığınızda, Yeniden Dağıtılabilir sürümü en az herhangi bir uygulama bileşeni tarafından kullanılan en son derleme araçları kadar yeni olmalıdır.
  • (Tüm program iyileştirme) derleyici anahtarı kullanılarak derlenen veya (Bağlantı zamanı kod oluşturma)/GL kullanılarak /GL/LTCG derlenen tüm nesne dosyaları ve kitaplıkları derleme ve son bağlantı için tam olarak aynı derleme araçlarını kullanmalıdır. Örneğin, Visual Studio 2019 sürüm 16.7 derleme araçları kullanılarak /GL oluşturulan kod, Visual Studio 2019 sürüm 16.8 derleme araçları kullanılarak /GL oluşturulan koda bağlanamaz. Derleyici Önemli hata C1047 yayar.

Microsoft Visual C++ Yeniden Dağıtılabilir Visual Studio 2015 ve sonraki sürümlerden yükseltme

Microsoft Visual C++ Yeniden Dağıtılabilir ana sürüm numarasını Visual Studio 2015, 2017, 2019, 2022 ve 2026 için aynı tuttuk. Bu, Redistributable'ın tek seferde yalnızca bir örneğinin yüklenebileceği anlamına gelir. Daha yeni bir sürüm, zaten yüklü olan eski sürümlerin üzerine yazar. Örneğin, bir uygulama Visual Studio 2015'ten Yeniden Dağıtılabilir'i yükleyebilir. Ardından, başka bir uygulama Visual Studio 2026'dan Redistributable'ı yükler. 2026 sürümü eski sürümün üzerine yazar, ancak ikili uyumlu olduklarından, önceki uygulama hala düzgün çalışır. Redistributable'ın en son sürümünün en yeni özelliklere, güvenlik güncelleştirmelerine ve hata düzeltmelerine sahip olduğundan emin olacağız. Bu nedenle her zaman en son kullanılabilir sürüme yükseltmenizi öneririz.

Benzer şekilde, daha yeni bir sürüm zaten yüklü olduğunda eski bir Yeniden Dağıtılabilir'i yükleyemezsiniz. Denerseniz yükleyici bir hata bildirir. Örneğin, 2022 Redistributable'ı 2026 sürümüne sahip bir makineye yüklerseniz aşağıdaki gibi bir hata görürsünüz:

0x80070666 - Another version of this product is already installed. Installation of this version cannot continue. To configure or remove the existing version of this product, use Add/Remove Programs on the Control Panel.

Bu hata tasarım gereğidir. En yeni sürümü yüklü tutmanızı öneririz. Yükleyicinizin bu hatadan sessizce kurtaraabildiğinden emin olun.

Önemli

Windows XP için çalışma zamanı kitaplığı desteği artık en son Visual Studio için Visual C++ Yeniden Dağıtılabilir kullanılamaz. Windows XP'yi destekleyen son yeniden dağıtılabilir sürüm 16.7 'dir (dosya sürümü 14.27.29114.0). Windows XP uygulamalarınız yeniden dağıtılabilir sürümüyle dağıtıldıysa veya daha sonraki bir sürüme güncelleştirildiyse, uygulamalar çalışmaz. Daha fazla bilgi ve Yeniden Dağıtılabilir'in Windows XP'yi destekleyen bir sürümünü alma hakkında daha fazla bilgi için bkz . Windows XP için programları yapılandırma.

Ayrıca bkz.

Visual C++ değişiklik geçmişi
Desteklenen en son Visual C++ Yeniden Dağıtılabilir indirmeleri
Visual C++ Çalışma Zamanı sürümü kullanımını denetleme
Yaşam Döngüsü SSS - Visual C++ Yeniden Dağıtım Paketleri ve çalışma zamanı kitaplıkları