Bagikan melalui


Tingkatkan kode Anda ke Universal CRT

Microsoft C Runtime Library (CRT) direfaktor di Visual Studio 2015. Pustaka C Standar, ekstensi POSIX dan fungsi khusus Microsoft, makro, dan variabel global dipindahkan ke pustaka baru, Universal C Runtime Library (Universal CRT atau UCRT). Komponen khusus kompilator CRT dipindahkan ke pustaka vcruntime baru.

UCRT sekarang menjadi komponen Windows, dan dikirim sebagai bagian dari Windows 10 dan yang lebih baru. UCRT mendukung ABI yang stabil berdasarkan konvensi panggilan C, dan sesuai dengan standar ISO C99, hanya dengan beberapa pengecualian. Ini tidak lagi terkait dengan versi kompiler tertentu. Anda dapat menggunakan UCRT pada versi Windows apa pun yang didukung oleh Visual Studio 2015 atau Visual Studio 2017. Manfaatnya adalah Anda tidak perlu lagi memperbarui build untuk menargetkan versi baru CRT dengan setiap peningkatan Visual Studio.

Pemfaktoran ulang ini telah mengubah nama atau lokasi banyak file header CRT, file pustaka, dan file Redistributable, dan metode penyebaran yang diperlukan untuk kode Anda. Banyak fungsi dan makro dalam UCRT juga ditambahkan atau diubah untuk meningkatkan kesesuaian standar. Untuk memanfaatkan perubahan ini, Anda harus memperbarui kode dan sistem build proyek yang ada.

Tempat menemukan file Universal CRT

Sebagai komponen Windows, file dan header pustaka UCRT sekarang menjadi bagian dari kit pengembangan perangkat lunak (SDK) Windows. Saat Anda menginstal Visual Studio, bagian-bagian Windows SDK yang diperlukan untuk menggunakan UCRT juga diinstal. Alat penginstal Visual Studio menambahkan lokasi header, pustaka, dan file DLL UCRT ke jalur default yang digunakan oleh sistem build proyek Visual Studio. Saat Anda memperbarui proyek Visual Studio C++, jika menggunakan pengaturan proyek default, IDE secara otomatis menemukan lokasi baru untuk file header. Dan, linker secara otomatis menggunakan pustaka UCRT dan vcruntime default baru. Demikian pula, jika Anda menggunakan perintah Pengembang untuk melakukan build baris perintah, variabel lingkungan yang berisi jalur untuk header dan pustaka juga diperbarui dan berfungsi secara otomatis.

File header Pustaka C Standar sekarang ditemukan di Windows SDK dalam folder sertakan dalam direktori khusus versi SDK. Lokasi umum untuk file header ada di direktori File Program atau File Program (x86) di bawah Windows Kits\10\Include\[sdk-version]\ucrt, di mana [sdk-version] sesuai dengan versi Atau pembaruan Windows, misalnya, 10.0.14393.0 untuk Pembaruan Ulang Tahun Windows 10.

Pustaka statis UCRT dan pustaka stub tautan dinamis ditemukan di direktori File Program atau File Program (x86) di bawah Windows Kits\10\Lib\[sdk-version]\ucrt\[architecture], di mana architecture ARM64, x86, atau X64. Pustaka statis ritel dan debug adalah libucrt.lib dan libucrtd.lib, dan pustaka untuk DLL UCRT adalah ucrt.lib dan ucrtd.lib.

DLL UCRT ritel dan debug ditemukan di lokasi terpisah. DLL ritel adalah file redistributable, dan dapat ditemukan di direktori Program Files atau Program Files (x86) di bawah Windows Kits\10\Redist\ucrt\DLLs\[architecture]\. Pustaka UCRT debug bukan file redistributable, dan dapat ditemukan di direktori Program Files atau Program Files (x86) di bawah Windows Kits\10\bin\[architecture]\ucrt folder.

Tempat menemukan pustaka dan header standar

Pustaka dukungan runtime khusus kompilator C dan C++, vcruntime, berisi kode yang diperlukan untuk mendukung startup program dan fitur seperti penanganan pengecualian dan intrinsik. Pustaka dan file headernya masih ditemukan di folder Microsoft Visual Studio khusus versi di direktori File Program atau Program (x86).

Di Visual Studio 2017, 2019, dan 2022, file header ditemukan di bawah Microsoft Visual Studio\[year]\[edition]\VC\Tools\MSVC\[lib-version]\include. Di sini, [year] adalah versi Visual Studio, [edition] adalah edisi atau nama panggilan untuk Visual Studio, dan [lib-version] merupakan versi build pustaka.

Pustaka tautan ditemukan di bawah Microsoft Visual Studio\[year]\[edition]\VC\Tools\MSVC\[lib-version]\lib\[architecture], di mana [year] adalah versi Visual Studio, [edition] adalah edisi atau nama panggilan untuk Visual Studio, [lib-version] adalah versi build pustaka, dan [architecture] merupakan arsitektur prosesor target. Pustaka tautan untuk OneCore dan Store juga ditemukan di folder pustaka.

Versi ritel dan debug pustaka statis adalah libvcruntime.lib dan libvcruntimed.lib. Pustaka ritel tautan dinamis dan stub debug adalah vcruntime.lib dan vcruntimed.lib, masing-masing.

Saat Memperbarui proyek Visual Studio C++, jika Anda telah mengatur properti Linker proyek Abaikan Semua Pustaka Default ke Ya, atau jika Anda menggunakan /NODEFAULTLIB opsi linker pada baris perintah, maka Anda harus memperbarui daftar pustaka Anda untuk menyertakan pustaka baru yang direfaktor. Ganti pustaka CRT lama, misalnya, libcmt.lib, , libcmtd.libmsvcrt.lib, atau msvcrtd.lib, dengan pustaka yang direfaktor yang setara. Untuk informasi tentang pustaka tertentu yang akan digunakan, lihat Fitur pustaka CRT.

Penyebaran dan redistribusi Universal CRT

Karena UCRT sekarang menjadi komponen sistem operasi Microsoft Windows, UCRT disertakan sebagai bagian dari sistem operasi di Windows 10 dan yang lebih baru. Ini tersedia melalui Windows Update untuk sistem operasi yang lebih lama, Windows Vista melalui Windows 8.1. Versi Redistributable tersedia untuk Windows XP. Sebagai komponen sistem operasi, pembaruan dan layanan UCRT dikelola oleh Windows Update secara independen dari versi kompilator Visual Studio dan Microsoft C++. Karena UCRT adalah komponen Windows, untuk keamanan dan kemudahan pembaruan, dan ukuran gambar yang lebih kecil, kami sangat menyarankan Anda menggunakan paket Redistributable untuk melakukan penyebaran pusat UCRT untuk aplikasi Anda.

Anda dapat menggunakan UCRT pada versi Windows apa pun yang didukung oleh Visual Studio 2015 atau yang lebih baru. Anda dapat mendistribusikannya kembali menggunakan paket untuk versi Windows yang vcredist didukung sebelum Windows 10. Paket termasuk vcredist komponen UCRT dan secara otomatis menginstalnya pada sistem operasi Windows yang tidak menginstalnya secara default. Untuk informasi selengkapnya, lihat Mendistribusikan ulang File Visual C++.

Penyebaran UCRT lokal aplikasi didukung, meskipun tidak direkomendasikan karena alasan performa dan keamanan. DLL untuk penyebaran UCRT lokal aplikasi disertakan sebagai bagian dari Windows SDK, di bawah redist subdirektori. DLL yang diperlukan termasuk ucrtbase.dll dan sekumpulan DLL penerus APISet bernama api-ms-win-[subset].dll. Kumpulan DLL yang diperlukan pada setiap sistem operasi bervariasi, jadi kami sarankan Anda menyertakan semua DLL saat Anda menggunakan penyebaran lokal aplikasi. Untuk informasi dan rekomendasi selengkapnya tentang penyebaran lokal aplikasi, lihat Penyebaran di Visual C++.

Perubahan pada fungsi dan makro Universal CRT

Banyak fungsi ditambahkan atau diperbarui di UCRT untuk meningkatkan kesamaan ISO C99, dan untuk mengatasi masalah kualitas dan keamanan kode. Dalam beberapa kasus, ini memerlukan perubahan pemecahan pada pustaka. Kode Anda yang dikompilasi dengan bersih saat menggunakan versi CRT yang lebih lama dapat rusak saat Anda mengkompilasinya menggunakan UCRT. Jika demikian, Anda harus mengubah kode Anda untuk memanfaatkan pembaruan dan fitur UCRT. Untuk daftar terperinci tentang perubahan dan pembaruan yang melanggar pada CRT yang ditemukan di Universal CRT, lihat bagian C Runtime Library (CRT) dari riwayat perubahan Visual C++. Ini termasuk daftar header dan fungsi yang terpengaruh yang dapat Anda gunakan untuk mengidentifikasi perubahan yang diperlukan dalam kode Anda.

Baca juga

Panduan porting dan peningkatan Visual C++
Gambaran umum potensi masalah peningkatan (Visual C++)
Meningkatkan proyek dari versi Visual C++ yang lebih lama
Riwayat perubahan Visual C++ 2003 - 2015
Peningkatan kesesuaian C++ di Visual Studio