Menentukan DLL mana yang akan didistribusikan ulang

Saat Anda membuat aplikasi yang menggunakan DLL pustaka yang disediakan oleh Visual Studio, pengguna aplikasi Anda juga harus memiliki DLL tersebut di komputer mereka agar aplikasi dapat dijalankan. Karena sebagian besar pengguna mungkin tidak menginstal Visual Studio, Anda harus menyediakan DLL ini untuk mereka. Visual Studio membuat DLL ini tersedia sebagai file Redistributable yang dapat Anda sertakan dalam penginstal aplikasi Anda.

Untuk mempermudah menyertakan DLL Redistributable dengan alat penginstal Anda, DLL tersedia sebagai paket Redistributable yang berdiri sendiri. Paket ini adalah executable khusus arsitektur yang menggunakan penyebaran pusat untuk menginstal file Redistributable di komputer pengguna. Misalnya, vc_redist.x86.exe menginstal pustaka 32-bit untuk komputer x86 dan x64, vc_redist.x64.exe menginstal pustaka 64-bit untuk komputer x64, dan vcredist.ARM64.exe menginstal pustaka untuk komputer ARM dan ARM64. Kami merekomendasikan penyebaran pusat karena Microsoft dapat menggunakan layanan Windows Update untuk memperbarui pustaka ini secara independen. Selain salinan di penginstalan Visual Studio Anda, paket Redistributable saat ini tersedia untuk diunduh. Untuk tautan ke paket Redistributable terbaru yang didukung untuk toolset saat ini dan yang lebih lama, lihat Unduhan Visual C++ Redistributable terbaru yang didukung. Versi spesifik paket Redistributable sebelumnya dapat ditemukan dengan mencari my.visualstudio.com "Paket Visual C++ Redistributable".

Untuk mempermudah menyertakan DLL Redistributable dengan alat penginstal Anda, DLL tersedia sebagai paket Redistributable yang berdiri sendiri. Paket ini adalah executable khusus arsitektur yang menggunakan penyebaran pusat untuk menginstal file Redistributable di komputer pengguna. Misalnya, vcredist_x86.exe menginstal pustaka 32-bit untuk komputer x86 dan x64, vcredist_x64.exe menginstal pustaka 64-bit untuk komputer x64, dan vcredist_ARM.exe menginstal pustaka untuk komputer ARM. Kami merekomendasikan penyebaran pusat karena Microsoft dapat menggunakan layanan Windows Update untuk memperbarui pustaka ini secara independen. Selain salinan di penginstalan Visual Studio Anda, paket Redistributable saat ini tersedia untuk diunduh. Untuk tautan ke paket Redistributable terbaru yang didukung untuk toolset saat ini dan yang lebih lama, lihat Unduhan Visual C++ terbaru yang didukung. Versi spesifik paket Redistributable sebelumnya dapat ditemukan dengan mencari my.visualstudio.com "Paket Visual C++ Redistributable".

Kami hanya mendukung penggunaan paket Redistributable yang sama dengan atau yang lebih baru dari versi toolset Anda. Nomor versi utama paket Redistributable yang Anda sebarkan harus cocok dengan versi toolset Visual Studio yang digunakan untuk membuat aplikasi Anda, dan versi minor harus sama atau lebih tinggi. Visual Studio 2022, 2019, 2017, dan 2015 semuanya memiliki nomor versi toolset yang kompatibel . Untuk versi ini, file Visual Studio Redistributable yang lebih baru dapat digunakan oleh aplikasi yang dibangun oleh toolset dari versi yang lebih lama. Misalnya, file Visual Studio 2022 Redistributable dapat digunakan oleh aplikasi yang dibuat dengan menggunakan toolset Visual Studio 2017 atau 2015. Meskipun kompatibel, kami tidak mendukung penggunaan file Redistributable yang lebih lama di aplikasi yang dibangun dengan menggunakan toolset yang lebih baru. Misalnya, menggunakan file Redistributable 2017 di aplikasi yang dibangun dengan menggunakan toolset 2019 tidak didukung.

Dimungkinkan juga untuk menyertakan DLL Redistributable dengan alat penginstal Anda dalam modul penggabungan. Metode ini sekarang tidak digunakan lagi karena pustaka yang disebarkan dengan cara ini tidak dapat diperbarui secara otomatis oleh Windows Update. Modul penggabungan yang dapat didistribusikan ulang, atau modul Penginstal Microsoft (.msm file), adalah komponen opsional yang tersedia di Penginstal Visual Studio. Saat diinstal, modul penggabungan untuk DLL Redistributable ditemukan di direktori penginstalan Visual Studio Anda di bawah %VCToolsRedistDir%\MergeModules\. Di Visual Studio 2015 dan versi Visual Studio yang lebih lama, file-file ini ditemukan di direktori Program Files atau Program Files (x86) Anda di Common Files\Merge Modules subdirektori. Untuk informasi selengkapnya tentang penggunaan file-file ini, lihat Mendistribusikan ulang komponen dengan menggunakan Modul Penggabungan.

DLL Redistributable individual juga disertakan dalam penginstalan Visual Studio Anda. Secara default, folder diinstal di Visual %VCToolsRedistDir%\[architecture]\Microsoft.[toolset].[library] folder, di mana [architecture] mewakili arsitektur target, [toolset] mewakili versi toolset, dan [library] mewakili pustaka.

Dimungkinkan juga untuk menyertakan DLL Redistributable dengan alat penginstal Anda dalam modul penggabungan. Metode ini sekarang tidak digunakan lagi karena pustaka yang disebarkan dengan cara ini tidak dapat diperbarui secara otomatis oleh Windows Update. Modul penggabungan redistributable untuk DLL Redistributable ditemukan di direktori Program Files atau Program Files (x86) Anda dalam Common Files\Merge Modules subdirektori. Untuk informasi selengkapnya tentang penggunaan file-file ini, lihat Mendistribusikan ulang komponen dengan menggunakan Modul Penggabungan.

DLL Redistributable individual juga disertakan dalam penginstalan Visual Studio Anda. Secara default, mereka diinstal di direktori penginstalan Visual Studio 2015 di redist\debug_nonredist\[architecture]\Microsoft.[toolset].[library] folder, di mana [architecture] mewakili arsitektur target, [toolset] mewakili versi toolset, dan [library] merupakan pustaka Debug yang memiliki DLL debug.

Gunakan versi terbaru file DLL pustaka apa pun, paket Redistributable, atau gabungkan modul yang ditemukan di direktori ini. Anda dapat menggunakan pustaka ini untuk penyebaran lokal, dengan menginstalnya di direktori yang sama dengan aplikasi Anda. Kami tidak merekomendasikan penyebaran lokal karena membuat Anda bertanggung jawab untuk memberikan pembaruan ke aplikasi yang Anda sebarkan. Penyebaran pusat dengan menggunakan paket Redistributable lebih disukai.

Untuk menentukan DLL mana yang harus Anda distribusikan ulang dengan aplikasi Anda, kumpulkan daftar DLL yang bergantung pada aplikasi Anda. DLL ini biasanya terdaftar sebagai input pustaka impor ke linker. Pustaka tertentu, seperti vcruntime dan Universal C Runtime Library (UCRT), disertakan secara default. Jika aplikasi Anda atau salah satu dependensinya menggunakan LoadLibrary untuk memuat DLL secara dinamis, DLL tersebut mungkin tidak tercantum dalam input ke linker. Salah satu cara untuk mengumpulkan daftar DLL yang dimuat secara dinamis adalah dengan menjalankan Dependency Walker (depends.exe) di aplikasi Anda, seperti yang dijelaskan dalam Memahami Dependensi Aplikasi Visual C++. Sayangnya, alat ini sudah kedaluwarsa dan mungkin melaporkan bahwa alat ini tidak dapat menemukan DLL tertentu.

Saat Anda memiliki daftar dependensi, bandingkan dengan daftar yang ditautkan dalam file yang Redist.txt ditemukan di bawah direktori penginstalan Microsoft Visual Studio. Atau, ke "daftar REDIST" dari DLL Redistributable yang dirujuk di bagian "File Kode Yang Dapat Didistribusikan" dari Ketentuan Lisensi Perangkat Lunak Microsoft untuk salinan Visual Studio Anda. Untuk Visual Studio 2022, lihat Kode yang Dapat Didistribusikan untuk Visual Studio 2022. Untuk Visual Studio 2019, lihat Kode yang Dapat Didistribusikan untuk Visual Studio 2019. Untuk Visual Studio 2017, lihat Kode yang Dapat Didistribusikan untuk Microsoft Visual Studio 2017 (Termasuk Utilitas, Ekstensibilitas, dan File BuildServer). Untuk Visual Studio 2015, lihat Kode yang Dapat Didistribusikan untuk Microsoft Visual Studio 2015 dan Microsoft Visual Studio 2015 SDK (Termasuk Utilitas dan File BuildServer). Untuk Visual Studio 2013, daftar tersedia secara online di Kode Yang Dapat Didistribusikan untuk Microsoft Visual Studio 2013 dan Microsoft Visual Studio 2013 SDK.

Di versi Visual Studio sebelum Visual Studio 2015, C Runtime Library (CRT) disertakan sebagai DLL redistributable, di msvc[version].dll. Di Visual Studio 2015, fungsi dalam CRT direfaktorkan ke vcruntime dan UCRT. UCRT sekarang menjadi komponen sistem di Windows 10 dan yang lebih baru, dikelola oleh Windows Update. Ini tersedia di semua sistem operasi Windows 10 dan yang lebih baru. Untuk menyebarkan aplikasi Anda ke sistem operasi sebelumnya, Anda mungkin juga perlu mendistribusikan ulang UCRT. Versi awal UCRT disertakan dalam file Visual Studio Redistributable. Versi ini hanya diinstal pada sistem operasi yang lebih lama dari Windows 10, dan hanya jika tidak ada versi UCRT yang sudah diinstal. Untuk versi UCRT yang dapat diinstal untuk sistem downlevel sebagai paket Pembaruan Sistem Microsoft, lihat Windows 10 Universal C Runtime di Pusat Unduhan Microsoft.

Anda tidak dapat mendistribusikan ulang semua file yang disertakan dalam Visual Studio. Anda hanya diizinkan untuk mendistribusikan ulang file yang ditentukan di Redist.txt atau "daftar REDIST" online. Anda juga tidak dapat mendistribusikan ulang versi debug aplikasi Anda, atau versi debug DLL atau pustaka yang disediakan oleh Microsoft. Anda hanya dapat menyalin executable debug dan pustaka ke komputer yang Anda gunakan untuk pengujian. Untuk informasi selengkapnya, lihat Memilih metode penyebaran.

Tabel berikut ini menjelaskan beberapa DLL Visual C++ yang mungkin bergantung pada aplikasi Anda.

Pustaka Visual C++ Deskripsi Berlaku untuk
vcruntime[version].dll Pustaka Runtime untuk kode asli. Aplikasi yang menggunakan layanan startup dan penghentian bahasa C dan C++ normal.
vccorlib[version].dll Pustaka Runtime untuk kode terkelola. Aplikasi yang menggunakan layanan bahasa C++ untuk kode terkelola.
msvcp[version].dll dan msvcp[version_dotnumber].dll Pustaka Standar C++ untuk kode asli. Aplikasi yang menggunakan Pustaka Standar C++.
concrt[version].dll Pustaka Runtime Konkurensi untuk kode asli. Aplikasi yang menggunakan Runtime Konkurensi.
mfc[version].dll Pustaka Microsoft Foundation Classes (MFC). Aplikasi yang menggunakan Pustaka MFC.
mfc[version][language].dll Sumber daya Pustaka Microsoft Foundation Classes (MFC). Aplikasi yang menggunakan sumber daya bahasa tertentu untuk MFC.
mfc[version]u.dll Pustaka MFC dengan dukungan Unicode. Aplikasi yang menggunakan Pustaka MFC dan memerlukan dukungan Unicode.
mfcmifc80.dll Pustaka Antarmuka Terkelola MFC. Aplikasi yang menggunakan Pustaka MFC dengan Kontrol Formulir Windows.
mfcm[version].dll Pustaka Terkelola MFC. Aplikasi yang menggunakan Pustaka MFC dengan Kontrol Formulir Windows.
mfcm[version]u.dll Pustaka Terkelola MFC dengan dukungan Unicode. Aplikasi yang menggunakan Pustaka MFC dengan Kontrol Formulir Windows dan memerlukan dukungan Unicode.
vcamp[version].dll Pustaka AMP untuk kode asli. Aplikasi yang menggunakan kode pustaka C++ AMP.
vcomp[version].dll Pustaka OpenMP untuk kode asli. Aplikasi yang menggunakan kode pustaka C++ OpenMP.

Catatan

Anda tidak perlu lagi mendistribusikan ulang Pustaka Templat Aktif sebagai DLL terpisah. Fungsionalitasnya telah dipindahkan ke header dan pustaka statis.

Untuk informasi selengkapnya tentang cara mendistribusikan ulang DLL ini dengan aplikasi Anda, lihat Mendistribusikan ulang file Visual C++. Misalnya, lihat Contoh penyebaran.

Biasanya, Anda tidak perlu mendistribusikan ulang DLL sistem karena itu adalah bagian dari sistem operasi. Namun, mungkin ada pengecualian, misalnya, ketika aplikasi Anda akan berjalan pada beberapa versi sistem operasi Microsoft. Dalam hal ini, pastikan untuk membaca ketentuan lisensi yang sesuai. Selain itu, cobalah untuk meningkatkan DLL sistem baik melalui Windows Update, paket layanan atau dengan menggunakan paket Redistributable yang disediakan oleh Microsoft.

Baca juga

Memilih metode penyebaran
Menyebarkan aplikasi desktop