ID Artikel: 815065 - Kajian Terakhir: 04 Oktober 2011 - Revisi: 2.0 Apakah DLL?
Pada Halaman iniRINGKASANArtikel ini menjelaskan apa dynamic link library (DLL) adalah dan berbagai masalah yang mungkin terjadi saat Anda menggunakan dll. Kemudian, artikel ini menjelaskan beberapa masalah lanjutan yang harus Anda pertimbangkan ketika Anda mengembangkan dll Anda sendiri. Dalam menggambarkan apa DLL, artikel ini menjelaskan metode menghubungkan dinamis, DLL dependensi, DLL entry poin, mengekspor DLL fungsi, dan DLL pemecahan masalah alat. Artikel ini diakhiri dengan perbandingan tingkat tinggi dll ke Microsoft.NET Framework Majelis. PENDAHULUANUntuk sistem operasi Microsoft Windows yang terdaftar
di bagian "Berlaku untuk", banyak fungsi sistem operasi
disediakan oleh dynamic link library (DLL). Selain itu, ketika Anda menjalankan
program pada salah satu sistem operasi Windows, banyak fungsi
program dapat disediakan oleh dll. Sebagai contoh, beberapa program mungkin berisi
banyak modul yang berbeda, dan setiap modul program terdapat dan
didistribusikan di dll. Penggunaan dll membantu mempromosikan modularisasi dari kode, menggunakan kembali kode, penggunaan efisien memori dan ruang disk berkurang. Oleh karena itu, sistem operasi dan program memuat lebih cepat, berjalan lebih cepat dan memakan waktu kurang ruang disk pada komputer. Ketika sebuah program menggunakan DLL, masalah yang disebut ketergantungan dapat menyebabkan program tidak untuk menjalankan. Ketika sebuah program menggunakan DLL, sebuah dependensi dibuat. Jika program lain akan menimpa dan istirahat ini ketergantungan, program asli mungkin tidak berhasil menjalankan. Dengan pengenalan Microsoft.NET Framework, sebagian besar masalah ketergantungan memiliki telah dihapuskan oleh menggunakan Majelis. INFORMASI LEBIH LANJUTApakah DLL?DLL adalah sebuah perpustakaan yang berisi kode dan data yang dapat digunakan oleh lebih dari satu program pada saat yang sama. Sebagai contoh, dalam operasi Windows sistem, Comdlg32 DLL melakukan dialog umum kotak berhubungan fungsi. Oleh karena itu, setiap program dapat menggunakan fungsi yang terdapat dalam ini DLL untuk menerapkan Terbuka kotak dialog. Ini membantu mempromosikan kembali kode dan penggunaan efisien memori.Dengan menggunakan DLL, sebuah program dapat modularized ke dalam komponen-komponen yang terpisah. Sebagai contoh, program akuntansi mungkin dijual oleh modul. Setiap modul dapat dimuat ke program utama saat menjalankan jika modul diinstal. Karena modul-modul terpisah, saat beban program ini lebih cepat, dan modul hanya dimuat ketika bahwa fungsi diminta. Selain itu, pembaruan lebih mudah untuk diterapkan ke setiap modul tanpa mempengaruhi bagian-bagian lain dari program. Sebagai contoh, Anda mungkin memiliki program penggajian, dan tarif pajak berubah setiap tahun. Ketika perubahan ini adalah terisolasi untuk DLL, Anda dapat menerapkan pembaruan tanpa perlu untuk membangun atau menginstal seluruh program lagi. Daftar berikut ini menjelaskan beberapa file yang diimplementasikan sebagai dll dalam sistem operasi Windows:
Keuntungan DLLDaftar berikut ini menjelaskan beberapa keuntungan yang berikan saat program menggunakan DLL:
Dependensi DLLKetika sebuah program atau DLL menggunakan fungsi DLL di lain DLL, ketergantungan dibuat. Oleh karena itu, program ini tidak lagi mandiri, dan program mungkin mengalami masalah jika ketergantungan rusak. Sebagai contoh, program tidak dapat dijalankan jika salah satu tindakan berikut terjadi:
Daftar berikut ini menjelaskan perubahan yang telah diperkenalkan pada Microsoft Windows 2000 dan dalam sistem operasi Windows kemudian untuk membantu meminimalkan ketergantungan masalah:
Alat-alat pemecahan masalah DLLBeberapa alat tersedia untuk membantu Anda memecahkan masalah DLL. Alat berikut adalah beberapa alat-alat ini.Ketergantungan WalkerAlat ketergantungan Walker dapat secara rekursif memindai semua tergantung Dll yang digunakan oleh program. Ketika Anda membuka program dalam ketergantungan Walker, Ketergantungan Walker melakukan cek berikut:
drive\Program visual Studio\Common\Tools Pemecah masalah Universal DLLAlat pemecah masalah Universal (DUPS) DLL yang digunakan untuk melakukan audit, Bandingkan, dokumen, dan menampilkan informasi DLL. Daftar berikut ini menjelaskan utilitas yang membuat alat DUPS:
247957
(http://support.microsoft.com/kb/247957/
)
Menggunakan DUPS.exe untuk mengatasi masalah kompatibilitas DLL Pengembangan DLLBagian ini berisi tentang isu-isu dan persyaratan yang Anda harus mempertimbangkan ketika Anda mengembangkan dll Anda sendiri.Jenis dllKetika Anda memuat DLL di sebuah aplikasi, dua metode menghubungkan membiarkan Anda memanggil fungsi DLL diekspor. Dua metode menghubungkan waktu buka menghubungkan dinamis dan menghubungkan dinamis run-time.Waktu buka dinamis menghubungkanDalam waktu buka dinamis, aplikasi membuat eksplisit panggilan untuk diekspor DLL fungsi seperti lokal fungsi. Untuk menggunakan waktu buka dinamis menghubungkan, menyediakan sebuah header (.h) file dan impor perpustakaan (.lib) file ketika Anda mengkompilasi dan link aplikasi. Ketika Anda melakukan ini, linker akan memberikan sistem dengan informasi yang diperlukan untuk memuat DLL dan menyelesaikan diekspor DLL fungsi lokasi pada waktu buka.Run-time dinamis menghubungkanDalam dinamis run-time, menghubungkan, panggilan aplikasi baik LoadLibrary fungsi atau LoadLibraryEx fungsi untuk memuat DLL pada jangka waktu. Setelah DLL sukses dimuat, Anda menggunakan GetProcAddress fungsi untuk mendapatkan alamat DLL diekspor fungsi yang ingin Anda panggil. Ketika Anda menggunakan run-time menghubungkan dinamis, Anda tidak perlu Impor file perpustakaan.Daftar berikut ini menjelaskan aplikasi kriteria untuk ketika menggunakan waktu buka dinamis menghubungkan dan ketika menggunakan run-time menghubungkan dinamis:
Titik entri DLLKetika Anda membuat DLL, Anda dapat secara opsional menentukan titik masuk fungsi. Titik entri fungsi disebut ketika proses atau benang melampirkan diri mereka untuk DLL atau terpisah sendiri dari DLL. Anda dapat menggunakan fungsi titik entri untuk menginisialisasi struktur data atau untuk menghancurkan data struktur seperti yang dipersyaratkan oleh DLL. Selain itu, jika aplikasi multithreaded, Anda dapat menggunakan benang penyimpanan lokal (TLS) untuk mengalokasikan memori yang pribadi untuk setiap thread di fungsi titik entri. Kode berikut contoh fungsi titik entri DLL.Titik entri fungsi harus hanya melakukan sederhana inisialisasi tugas dan tidak boleh menyebut DLL loading atau penghentian fungsi. Sebagai contoh, dalam catatan titik fungsi, Anda harus tidak langsung atau secara tidak langsung panggilan LoadLibrary fungsi atau LoadLibraryEx fungsi. Selain itu, Anda tidak boleh menyebut FreeLibrary fungsi ketika proses mengakhiri. Catatan Dalam multithreaded aplikasi, pastikan bahwa akses untuk DLL global data disinkronisasi (benang aman) untuk menghindari galat data mungkin. Pada melakukan hal ini, menggunakan TLS untuk menyediakan data unik untuk setiap thread. Mengekspor DLL fungsiUntuk mengekspor DLL fungsi, Anda juga dapat menambahkan kata kunci fungsi untuk DLL diekspor fungsi atau membuat file definisi (.def) modul yang berisi daftar fungsi DLL diekspor.Untuk menggunakan fungsi kata kunci, Anda harus menyatakan masing-masing fungsi yang Anda ingin ekspor dengan kunci berikut: __declspec(dllexport) Menggunakan fungsi DLL diekspor dalam aplikasi, Anda
harus menyatakan masing-masing fungsi yang ingin Anda impor dengan kunci berikut:__declspec(dllimport) Biasanya, Anda akan menggunakan satu file header yang telah menentukan pernyataan dan ifdef pernyataan untuk memisahkan pernyataan ekspor dan impor
pernyataan.Anda juga dapat menggunakan file definisi modul untuk menyatakan diekspor DLL fungsi. Ketika Anda menggunakan file definisi modul, Anda tidak memiliki untuk menambahkan kata kunci fungsi untuk fungsi DLL diekspor. Dalam modul file definisi, Anda menyatakan PERPUSTAKAAN pernyataan dan EKSPOR pernyataan untuk DLL. Kode berikut adalah contoh file definisi. Contoh DLL dan aplikasiDi Microsoft Visual C++ 6.0, Anda dapat membuat DLL dengan memilih baik Win32 Dynamic-Link Perpustakaan proyek jenis atau MFC AppWizard (dll) jenis proyek.Kode berikut ini adalah contoh dari DLL yang dibuat dalam Visual C++ dengan menggunakan Win32 Dynamic-Link Perpustakaan jenis proyek. Dalam dinamis run-time, menghubungkan, Anda menggunakan kode yang sama dengan kode berikut untuk memanggil SampleDLL.dll diekspor DLL fungsi.
The.NET Framework MajelisDengan pengenalan Microsoft.NET dan.NET Framework, sebagian besar masalah yang berhubungan dengan dll telah dieliminasi oleh menggunakan Majelis. Perakitan adalah unit logis fungsionalitas yang berjalan di bawah kendali.NET common language runtime (CLR). Majelis secara fisik ada sebagai berkas .dll atau sebagai berkas .exe. Namun, secara internal Majelis ini sangat berbeda dari Microsoft Win32 DLL.Majelis file berisi Majelis nyata, jenis metadata, Microsoft menengah kode bahasa (menjalankan), dan sumber daya lainnya. Majelis nyata berisi Majelis metadata yang memberikan semua informasi yang diperlukan untuk Majelis harus self-describing. Informasi berikut disertakan dalam Majelis nyata:
Daftar berikut ini menjelaskan beberapa fitur Majelis dibandingkan dengan fitur dll Win32:
REFERENSIUntuk informasi lebih lanjut tentang dll dan.NET Framework
Majelis, kunjungi Web site Microsoft berikut: Konflik DLL http://msdn2.Microsoft.com/en-us/library/ms811694.aspx (http://msdn2.microsoft.com/en-us/library/ms811694.aspx) Menerapkan sisi-by-side komponen berbagi dalam aplikasi http://msdn2.Microsoft.com/en-us/library/ms811700.aspx (http://msdn2.microsoft.com/en-us/library/ms811700.aspx) Cara membangun dan layanan terisolasi aplikasi dan sisi-by-side Majelis untuk Windows XP http://msdn2.Microsoft.com/en-us/library/ms997620.aspx (http://msdn2.microsoft.com/en-us/library/ms997620.aspx) Menyederhanakan penggunaan dan memecahkan DLL bertentangan dengan.NET Framework http://msdn2.Microsoft.com/en-US/netframework/aa497268.aspx (http://msdn2.microsoft.com/en-us/netframework/aa497268.aspx) The.NET Framework pengembang panduan: Majelis .aspx http://msdn2.Microsoft.com/en-us/library/hk5f40ct (vs.71) (http://msdn2.microsoft.com/en-us/library/hk5f40ct(vs.71).aspx) Run-time dinamis menghubungkan http://msdn2.Microsoft.com/en-us/library/ms685090.aspx (http://msdn2.microsoft.com/en-us/library/ms685090.aspx) Thread penyimpanan lokal http://msdn2.Microsoft.com/en-us/library/ms686749.aspx (http://msdn2.microsoft.com/en-us/library/ms686749.aspx) Berlaku bagi:
Penerjemahan MesinPENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah. Klik disini untuk melihat versi Inggris dari artikel ini:815065
(http://support.microsoft.com/kb/815065/en-us/
)
| Sumber Lain Situs Pendukung Lain
KomunitasCari Bantuan SekarangTerjemahan Artikel
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email


Kembali ke atas
