Dynamic Link Library (DLL) pada dasarnya merupakan sebuah file biner yang berisi kumpulan rutin-rutin siap pakai yang dapat dipanggil dari file executable atau file DLL lain.
Pada umumnya file DLL memiliki ekstensi .dll, meski hal ini bukan merupakan suatu keharusan. Beberapa jenis file DLL memiliki ekstensi khusus, misalnya .drv (untuk driver), .fon (untuk font) dan lainnya. DLL bekerja dengan basis objek, namun belum mendukung OOP (Object Oriented Programming).
Keuntungan penggunaan DLL antara lain:
- Beberapa aplikasi dapat menggunakan file DLL yang sama. Hal ini tentu menguntungkan, karena dapat mengurangi ukuran file program dan penggunaan memori.
- Suatu aplikasi dapat diupgrade hanya dengan mengganti file DLL tertentu tanpa harus mengganti atau meng-compile ulang seluruh file executable-nya. Hal ini bisa dilakukan jika perubahan terjadi hanya pada definisi fungsi, sedangkan parameter atau nilai baliknya tetap.
- DLL dapat digunakan secara dinamis, maksudnya DLL dipanggil atau dimuat ke memori hanya pada saat diperlukan saja. Hal ini dapat menghemat pengunaan memori.
- File DLL dapat dipanggil oleh beberapa kompiler yang berbeda. Misalnya file DLL yang di-compile dengan C++ dapat dipanggil oleh aplikasi yang dibuat oleh Delphi, atau sebaliknya.
Membuat File DLL
Untuk membuat file DLL baru, ikuti langkah-langkah berikut ini.
- Buat project baru dengan memilih menu File | New | Others. Pada window New Items pilih item Dynamic-Link Library. Kemudian simpan project. Nama project akan menjadi nama DLL yang dihasilkan.
- Jka ingin menambahkan unit baru pada project DLL, buat unit baru dari menu File | New | Unit.
- Ketik listing program pada unit yang dibuat.
- Pada source project (Anda dapat mengaksesnya melalui menu Project | View Source), tuliskan nama fungsi DLL yang akan diekspor.
- Pilih menu Project | Build All.
Program berikut ini mendemonstrasikan pembuatan DLL sederhana. Unit baru yang dibuat, disimpan dengan nama UExDllSource.pas, sedangkan project disimpan dengan nama ExampleDll.dpr
Project ini hanya memiliki satu buah fungsi yang akan diekspor, yaitu FungsiDLL(InputText: PChar; var JumKar: Integer): PChar. Fungsi ini memiliki tugas menghitung jumlah karakter text input. Teks baru yang terbentuk digunakan sebagai nilai balik.
Berikut adalah kode dari UExDllSource.pas.
unit UExDllSource; interface uses SysUtils; function FungsiDLL(InputText: PChar; var JumKar: Integer): PChar; export; implementation function FungsiDLL(InputText: PChar; var JumKar: Integer): PChar; var temp: String; begin JumKar:= StrLen(InputText); // hitung jumlah karakter temp:= String(InputText); // mengubah PChar -> String temp:= 'Text yang Anda masukkan: ' + temp; Result:= PChar(temp); end; end.
perhatikan prototype fungsi FungsiDLL di atas. Pada akhir deklarasi ditambahkan kata kunci export. Ini menunjukkan bahwa fungsi tersebut dapat dipanggil dari file lain.
Kode lengkap ExampleDLL.dpr kurang lebih sebagai berikut.
library ExampleDLL; uses SysUtils, Classes, UExDllSource in 'UExDllSource.pas'; exports FungsiDLL name 'FungsiDLL'; // fungsi yang dapat diakses // dari luar file DLL {$R *.res} begin end.
Fungsi-fungsi yang akan diekspor dituliskan setelah kata kunci exports. Perhatikan, nama fungsi yang diekspor bersifat case sensitive. Ini berarti, jika Anda memanggil FUNGSIDLL daripada FungsiDLL dari aplikasi lain, akan terjadi kegagalan dan sistem melaporkan bahwa fungsi tersebut tidak ditemukan.
Hal lain yang perlu diperhatikan adalah, jika Anda menggunakan string sebagai parameter atau nilai balik fungsi yang diekspor, Anda harus menambahkan unit ShareMem pada klausa uses. ShareMem merupakan antarmuka Borland Memory Managger BorlndMM.dll. Jadi, jika Anda menggunakan ShareMem, pastikan pula BorlndMM.dll disertakan pada saat mendistribusikan aplikasi.
Untuk menghindari hal di atas, sebaiknya string diganti dengan tipe PChar (null terminated string) atau ShortString.
ShortString pada dasarnya sama denganarray[0..255] of char. Meskipun pada Delphi terdapat tipe AnsiString dan ShortString, namun tipe PChar tetap dibutuhkan. Penggunaan PChar cukup beralasan, karena tipe ini merupakan tipe standar dalam C/C++, serta digunakan dalam Windows API.
Tahap terakhir dari pembuatan file DLL yaitu proses compile dan build. Pada Menu aplikasi, pilih Project | Compile ExampleDLL. Jika tidak terhenti dan menunjukkan pesan error, maka proses compiling berhasil. Kemudian dilanjutkan dengan proses build. Pilih menu Project | Build ExampleDLL dan file DLL Anda pun terbentuk. Selamat! :)
Comments
Post a Comment