Pemuatan DLL Statis vs Dinamis Dengan Delphi

DLL (Dynamic Link Library) bertindak sebagai pustaka fungsi bersama yang dapat dipanggil oleh berbagai aplikasi dan DLL lainnya. Delphi memungkinkan Anda buat dan gunakan DLL sehingga Anda dapat memanggil fungsi-fungsi ini sesuka hati. Namun, Anda harus mengimpor rutin ini sebelum dapat memanggilnya.

Fungsi yang diekspor dari DLL dapat diimpor dengan dua cara — baik dengan mendeklarasikan prosedur atau fungsi eksternal (statis) atau dengan panggilan langsung ke fungsi API spesifik DLL (dinamis).

Mari kita pertimbangkan DLL sederhana. Di bawah ini adalah kode untuk "circle.dll" yang mengekspor satu fungsi, yang disebut "CircleArea," yang menghitung luas lingkaran menggunakan jari-jari yang diberikan:

Setelah Anda memiliki circle.dll, Anda dapat menggunakan fungsi "CircleArea" yang diekspor dari aplikasi Anda.

Memuat statis

Cara paling sederhana untuk mengimpor prosedur atau fungsi adalah dengan mendeklarasikannya menggunakan arahan eksternal:

Jika Anda memasukkan deklarasi ini di bagian antarmuka unit, circle.dll dimuat sekali ketika program dimulai. Sepanjang pelaksanaan program, fungsi CircleArea tersedia untuk semua unit yang menggunakan unit di mana deklarasi di atas berada.

instagram viewer

Memuat dinamis

Anda dapat mengakses rutin di perpustakaan melalui panggilan langsung ke Win32 API, termasuk LoadLibrary, Perpustakaan Gratis, dan GetProcAddress. Fungsi-fungsi ini dideklarasikan di Windows.pas.

Berikut cara memanggil fungsi CircleArea menggunakan pemuatan dinamis:

Saat mengimpor menggunakan pemuatan dinamis, DLL tidak dimuat hingga panggilan ke LoadLibrary. Perpustakaan diturunkan oleh panggilan ke FreeLibrary.

Dengan pembebanan statis, DLL dimuat dan bagian inisialisasi dijalankan sebelum bagian inisialisasi aplikasi panggilan dijalankan. Ini dibalik dengan pembebanan dinamis.

Haruskah Anda Menggunakan Statis atau Dinamis?

Berikut ini adalah tampilan sederhana pada kelebihan dan kekurangan dari pemuatan DLL statis dan dinamis:

Memuat statis

Pro:

  • Lebih mudah untuk pengembang pemula; tidak ada "jelek" Panggilan API.
  • DLL dimuat hanya sekali, saat program dimulai.

Cons:

  • Aplikasi tidak akan memulai jika ada DLL yang hilang atau tidak dapat ditemukan. Pesan kesalahan seperti ini akan muncul: "Aplikasi ini gagal memulai karena 'missing.dll' tidak ditemukan. Menginstal ulang aplikasi dapat memperbaiki masalah ini ". Secara desain, urutan pencarian DLL dengan tautan statis mencakup direktori tempat aplikasi dimuat, direktori sistem, direktori Windows, dan direktori yang terdaftar di lingkungan PATH variabel. Perhatikan juga bahwa urutan pencarian mungkin berbeda untuk berbagai versi Windows. Selalu berharap memiliki semua DLL di direktori tempat aplikasi panggilan berada.
  • Lebih banyak memori digunakan karena semua DLL dimuat bahkan jika Anda tidak akan menggunakan beberapa fungsi

Memuat dinamis

Pro:

  • Anda dapat menjalankan program Anda bahkan ketika beberapa perpustakaan yang digunakannya tidak ada.
  • Konsumsi memori lebih kecil karena DLL hanya digunakan saat dibutuhkan.
  • Anda bisa menentukan path lengkap ke DLL.
  • Dapat digunakan untuk aplikasi modular. Aplikasi hanya memaparkan (memuat) modul (DLL) "disetujui" untuk pengguna.
  • Kemampuan untuk memuat dan membongkar perpustakaan secara dinamis, adalah dasar dari sistem plug-in yang memungkinkan pengembang untuk menambahkan fungsionalitas tambahan ke program.
  • Kompatibilitas mundur dengan versi Windows yang lebih lama di mana DLL sistem mungkin tidak mendukung fungsi yang sama atau didukung dengan cara yang sama. Mendeteksi versi Windows terlebih dahulu, lalu menautkan secara dinamis berdasarkan pada apa aplikasi Anda berjalan, memungkinkan Anda untuk mendukung lebih banyak versi Windows dan menyediakan solusi untuk OS yang lebih lama (atau paling tidak, dengan anggun menonaktifkan fitur yang tidak bisa Anda lakukan dukung.)

Cons:

  • Membutuhkan lebih banyak kode, yang tidak selalu mudah bagi pengembang pemula.
instagram story viewer