Pembuatan Dinamic Link Library


PEMBUATAN FILE DINAMIC LINK LIBRARY C++






       Pembuatan File Dinamic Link Library.

Disini Aplikasi Compiler Menggunakan Code Blocks 12.11

a)      Kita Buka Dahulu Aplication Code Blocks.



b)      Kemudian Klik Create New Project, Dan Akan Muncul Seperti ini kemudian Pilih Dinamic Link Library lalu Klik GO.


c)      Pada Project Title kita isikan Rescource . (rescource adalah nama yang digunakan untuk membuat sebuah file dll, jadi nama rescource bisa di ganti apa saja). Kemudian tentukan folder penyimpanan pada Folder to Create Project In. disini saya buat folder Dinamic Link Library di Desktop Untuk Menyimpan File dllnya kemudian Pilih Next.



d)     Setelah Itu Configurasi Compiler yang digunakan untuk Membuat Project tersebut (dll), Pilihlah GNU GCC Compiler (format default) kemudian Centang pada Create Debug Configuration dan Masukan Nama Folder yang Digunakan Untuk Debug File Dllnya. Kemudian Pada Create Release Configurasi Centang Dan Masukan Nama Folder yang digunakan Untuk File Release Dll. (Semua Nama Folder Terserah ).Kemudian Finish.


e)      Kemudian akan muncul folder source dan haders, didalam folder source terdapat sebuah main.cpp dan di folder headers terdapat sebuah main.h. itu adalah nama paten, yang tidak bisa di Rename ( Di ganti Dengan Nama Sesuka Kita ). Kemudian klik 2x pada source kemudian klik lagi 2x pada main.cpp.



f)       Lihat pada Fungsi Void DLL_EXPORT SomeFungsion (const LPCSTR sometext).
Void                                        : Kitagunakan Sebagai Fungsi Pembalik.
DLL_EXPORT                      : Digunakan Untuk mengambil source-code yang _ada dalam fungsi Some Fungsion ketika Program _(.exe) membutuhkan.
SomeFungsion                        : Adalah nama fungsi (Nama fungsi bisa di isi _terserah).
(const LPCSTR sometext)      : Nilai Dari Fungsi / bisa di kosongkan ( ).

 
Sebagai Contoh Kita Edit Pada Bagian Fungsi Tersebut Menjadi Fungsi Perkalian
Seperti Ini :

Void DLL_EXPORT perkalian()
{
Int a,b,c;
Cout<<” Masukan Nilai Pertama : “;
Cin>>a;
Cout<<” Masukan Nilai Kedua     : “;
Cin>>b;
C=a*b;
Cout<<” Hasilnya Adalah “<<c;
}

Di dalam {} terdapat Source-Code perkalian, Jadi Jika Menggunakan Fungsi Kita
Tidak repot – repot untuk menulisanya lagi karena kita tingggal memanggil fungsi
Tersebut ( fungsi seperti ketua group dalam kelompok, dan kita hanya memanggil
Ketua kelompoknya kemudian anggota / Source-Code selalu mengikuti ketuanya)
Di Dalam main.cpp Kita juga bisa membuat banyak fungsi.
Kemudian Di Bawah Header #include “main.h” masukan #include <iostream>.
#include “main.h”    : Kita Gunakan untuk memanggil header main yang ada di dalam project kita.
#include <iostream> : Kita Gunakan Untuk memanggil perintah cout dan cin yang ada di dalam header iostream.
Setelah itu Di bawah Header Masukan Using Namespaces std;
Yang selalu di gunakan di dalam Code Blocks.


g)      Setelah itu klik2x pada main.h yang ada di dalam folder Headers.
Kemudian cari Source – Code

extern "C"
{
#endif

void DLL_EXPORT SomeFunction(const LPCSTR sometext);

#ifdef __cplusplus
}

Pada isi extern “C” itu berguna untuk Export Fungsi yang ada di dalamnya.
Sebagai Contoh Di atas terdapat sebuah fungsi SomeFungsion(const LPCSTR sometext);

Kemudian Fungsi SomeFungsion(const LPCSTR sometext) ganti dengan fungsi yang telah dibuat tadi di dalam main.cpp
Example :

extern "C"
{
#endif

void DLL_EXPORT perkalian( );

#ifdef __cplusplus
}


Andaikan tadi kita buat 3 buah fungsi yang ada pada main.cpp maka kita tambahkan pula 3 fungsi itu di dalam main.h yang ada di dalam extern “C”. Karena jika tidak fungsi tidak bisa di export / di panggil oleh application. Dan setelah itu klik Save All File kemudian build.



h)      Apabila sudah di Build maka akan terdapat folder bin dan obj di dalam folder bin/isifiledll/ Terdapat 3 buah file yaitu file rescource.dll, librescource.a, dan librescource.def.
 




i)        Setelah itu Kita Buat Project baru yang digunakan untuk memanggil file dll yang sudah di buat tadi. Dengan cara klik File – New – Project – Console Aplication.



j)        Kemudian pilih Next, pilih Bahasa C++ Kemudian Next









k)      Kemudian Beri nama “ application “ pada project title ( nama bisa sesuka anda )



l)        Kemudian Next, Dan setelah itu Muncul Konfigurasi ( Biarkan Default ) dan Finish.








m)    Kemudian Pada Project Aplication pada folder source terdapat sebuah file yang bernama main.cpp. main.cpp tidak bisa di ganti nama sesuka anda karna nama file paten.


n)      Kemudian cari folder yang telah kita buat ( Dinamic Link Library ) kemudian copy file main.h pada folder rescource.


Dan paste Di Folder Aplication



o)      Kemudian klik kanan pada project Aplication ( yang ada icon kotak berisi warna merah,hijau,kuning dan biru) Kemudian Klik Add Files…


p)      Kemudian pilih Main.h Dan kemudian Open.



q)      Kemudian pada main.cpp yang ada di dalam project application panggil fungsi yang sudah ada di dalam file dll yang sudah dibuat tadi.

Example :

#include <iostream>
#include "main.h"
#include <conio.h>

using namespace std;

int main()
{
    perkalian();
   
    getch();
}







Kemudian Copy rescource.dll dan librescource.a yang ada di dalam folder
Dinamic Link Library / rescource / bin / isifiledll
 
Kedalam Dinamic Link Library / Aplication / bin / isifiledll



r)       Kemudian klik Menu Project yang ada di Code Blocks kemudian Build Options
Kemudian pilih tab Linker kemudian tambahkan file librescource.a dengan cara add – browse . pilih file librescource.a yang ada pada folder Dinamic Link Library / Aplication / bin / isifiledll kemudian Ok.


s)       Kemudian Klik Build dan Run.



            Hasil Terdapat pada Folder Dinamic Link Library / Aplication / bin / isifiledll. File terpenting dari hasil adalah
    
Jika recource.dll di hapus maka file application.exe tidak akan bisa di buka karena source-code application.exe ada di dalam file rescource.dll ( rescource.dll adalah file induk ). Penempatan .dll harus satu folder dengan file executablenya.


Download Makalah Pembuatan Dinamic Link Library
Password  : x-code

PEMBUATAN FILE DINAMIC LINK LIBRARY C++






       Pembuatan File Dinamic Link Library.

Disini Aplikasi Compiler Menggunakan Code Blocks 12.11

a)      Kita Buka Dahulu Aplication Code Blocks.



b)      Kemudian Klik Create New Project, Dan Akan Muncul Seperti ini kemudian Pilih Dinamic Link Library lalu Klik GO.


c)      Pada Project Title kita isikan Rescource . (rescource adalah nama yang digunakan untuk membuat sebuah file dll, jadi nama rescource bisa di ganti apa saja). Kemudian tentukan folder penyimpanan pada Folder to Create Project In. disini saya buat folder Dinamic Link Library di Desktop Untuk Menyimpan File dllnya kemudian Pilih Next.



d)     Setelah Itu Configurasi Compiler yang digunakan untuk Membuat Project tersebut (dll), Pilihlah GNU GCC Compiler (format default) kemudian Centang pada Create Debug Configuration dan Masukan Nama Folder yang Digunakan Untuk Debug File Dllnya. Kemudian Pada Create Release Configurasi Centang Dan Masukan Nama Folder yang digunakan Untuk File Release Dll. (Semua Nama Folder Terserah ).Kemudian Finish.


e)      Kemudian akan muncul folder source dan haders, didalam folder source terdapat sebuah main.cpp dan di folder headers terdapat sebuah main.h. itu adalah nama paten, yang tidak bisa di Rename ( Di ganti Dengan Nama Sesuka Kita ). Kemudian klik 2x pada source kemudian klik lagi 2x pada main.cpp.



f)       Lihat pada Fungsi Void DLL_EXPORT SomeFungsion (const LPCSTR sometext).
Void                                        : Kitagunakan Sebagai Fungsi Pembalik.
DLL_EXPORT                      : Digunakan Untuk mengambil source-code yang _ada dalam fungsi Some Fungsion ketika Program _(.exe) membutuhkan.
SomeFungsion                        : Adalah nama fungsi (Nama fungsi bisa di isi _terserah).
(const LPCSTR sometext)      : Nilai Dari Fungsi / bisa di kosongkan ( ).

 
Sebagai Contoh Kita Edit Pada Bagian Fungsi Tersebut Menjadi Fungsi Perkalian
Seperti Ini :

Void DLL_EXPORT perkalian()
{
Int a,b,c;
Cout<<” Masukan Nilai Pertama : “;
Cin>>a;
Cout<<” Masukan Nilai Kedua     : “;
Cin>>b;
C=a*b;
Cout<<” Hasilnya Adalah “<<c;
}

Di dalam {} terdapat Source-Code perkalian, Jadi Jika Menggunakan Fungsi Kita
Tidak repot – repot untuk menulisanya lagi karena kita tingggal memanggil fungsi
Tersebut ( fungsi seperti ketua group dalam kelompok, dan kita hanya memanggil
Ketua kelompoknya kemudian anggota / Source-Code selalu mengikuti ketuanya)
Di Dalam main.cpp Kita juga bisa membuat banyak fungsi.
Kemudian Di Bawah Header #include “main.h” masukan #include <iostream>.
#include “main.h”    : Kita Gunakan untuk memanggil header main yang ada di dalam project kita.
#include <iostream> : Kita Gunakan Untuk memanggil perintah cout dan cin yang ada di dalam header iostream.
Setelah itu Di bawah Header Masukan Using Namespaces std;
Yang selalu di gunakan di dalam Code Blocks.


g)      Setelah itu klik2x pada main.h yang ada di dalam folder Headers.
Kemudian cari Source – Code

extern "C"
{
#endif

void DLL_EXPORT SomeFunction(const LPCSTR sometext);

#ifdef __cplusplus
}

Pada isi extern “C” itu berguna untuk Export Fungsi yang ada di dalamnya.
Sebagai Contoh Di atas terdapat sebuah fungsi SomeFungsion(const LPCSTR sometext);

Kemudian Fungsi SomeFungsion(const LPCSTR sometext) ganti dengan fungsi yang telah dibuat tadi di dalam main.cpp
Example :

extern "C"
{
#endif

void DLL_EXPORT perkalian( );

#ifdef __cplusplus
}


Andaikan tadi kita buat 3 buah fungsi yang ada pada main.cpp maka kita tambahkan pula 3 fungsi itu di dalam main.h yang ada di dalam extern “C”. Karena jika tidak fungsi tidak bisa di export / di panggil oleh application. Dan setelah itu klik Save All File kemudian build.



h)      Apabila sudah di Build maka akan terdapat folder bin dan obj di dalam folder bin/isifiledll/ Terdapat 3 buah file yaitu file rescource.dll, librescource.a, dan librescource.def.
 




i)        Setelah itu Kita Buat Project baru yang digunakan untuk memanggil file dll yang sudah di buat tadi. Dengan cara klik File – New – Project – Console Aplication.



j)        Kemudian pilih Next, pilih Bahasa C++ Kemudian Next









k)      Kemudian Beri nama “ application “ pada project title ( nama bisa sesuka anda )



l)        Kemudian Next, Dan setelah itu Muncul Konfigurasi ( Biarkan Default ) dan Finish.








m)    Kemudian Pada Project Aplication pada folder source terdapat sebuah file yang bernama main.cpp. main.cpp tidak bisa di ganti nama sesuka anda karna nama file paten.


n)      Kemudian cari folder yang telah kita buat ( Dinamic Link Library ) kemudian copy file main.h pada folder rescource.


Dan paste Di Folder Aplication



o)      Kemudian klik kanan pada project Aplication ( yang ada icon kotak berisi warna merah,hijau,kuning dan biru) Kemudian Klik Add Files…


p)      Kemudian pilih Main.h Dan kemudian Open.



q)      Kemudian pada main.cpp yang ada di dalam project application panggil fungsi yang sudah ada di dalam file dll yang sudah dibuat tadi.

Example :

#include <iostream>
#include "main.h"
#include <conio.h>

using namespace std;

int main()
{
    perkalian();
   
    getch();
}







Kemudian Copy rescource.dll dan librescource.a yang ada di dalam folder
Dinamic Link Library / rescource / bin / isifiledll
 
Kedalam Dinamic Link Library / Aplication / bin / isifiledll



r)       Kemudian klik Menu Project yang ada di Code Blocks kemudian Build Options
Kemudian pilih tab Linker kemudian tambahkan file librescource.a dengan cara add – browse . pilih file librescource.a yang ada pada folder Dinamic Link Library / Aplication / bin / isifiledll kemudian Ok.


s)       Kemudian Klik Build dan Run.



            Hasil Terdapat pada Folder Dinamic Link Library / Aplication / bin / isifiledll. File terpenting dari hasil adalah
    
Jika recource.dll di hapus maka file application.exe tidak akan bisa di buka karena source-code application.exe ada di dalam file rescource.dll ( rescource.dll adalah file induk ). Penempatan .dll harus satu folder dengan file executablenya.


Download Makalah Pembuatan Dinamic Link Library
Password  : x-code

DEFINISI DINAMIC LINK LIBRARY (DLL)




       A.  Dinamic Link Library


1.      Pengertian Dinamic Link Library

Dynamic Link Library (File Dll) adalah file yang mengandung kode-fungsi yang dapat dipanggil dari kode-executable (.exe) atau bisa juga di panggil dari file Dll yang lain. Paling simple kalo disebut file library windows karena umumnya hanya ada pada Sistem Operasi Windows, File Dll merupakan kode yang sudah dikompilasi dan dapat digunakan oleh program lain bias juga di gunakan oleh beberapa program.  Jika kita meletakan fungsi ke dalam dll, berarti fungsi tersebut dapat diakses oleh semua program pada saat yang bersamaan.  File Dll biasanya ditulis dengan bahasa C/C++, Delphi atau bahasa lainnya yang mendukung Sistem Operasi Windows.


2.      Kegunaan Dinamic Link Library

Eksistensi dari File Dll paling utama ditujukan buat menyederhanakan suatu program. Karena progam tersebut tidak perlu mempunyai kode progam untuk fungsi umumnya, tinggal memanggil fungsi yang ada pada File Dll tersebut. Sebagai contoh sebelum kita membuat sebuah program perkalian, kita membuat terlebih dahulu source-code Fungsi perkalian di dalam file Dll, kemudian kita buat source-code aplikasi dan dimana source-code aplikasi tersebut kita tinggal memanggil fungsi perkalian yang sudah kita masukan di dalam File Dll Tersebut. 

Jadi dengan kata lain nama Dynamic Link Library bisa diartikan penyederhana program karena source-code program induk ada di dalam File Dll tersebut. Jika Di Dalam Windows dia adalah perpustakaan yang punya banyak list fungsi dan bisa dimanfaatkan program yang ada di windows. Mereka disebut link dinamis (dynamic link) karena mereka dimanfaatkan hanya ketika sebuah program memanggil mereka, dan merekapun juga berjalan di ruang memori (memory area) tersendiri. Lebih dari satu program dapat menggunakan fungsi DLL,  bahkan pada waktu yang sama. Sehingga struktur program aplikasi menjadi lebih sederhana, ringan dan tidak banyak memakan ruang space.



3.      Fitur Dinamic Link Library

a.       Management Memory

Pada Windows API , file DLL akan disusun menjadi beberapa bagian . Setiap bagian telah menetapkan sendiri atribut , seperti menjadi dapat ditulisi atau read-only , executable ( kode ) atau non - executable ( untuk data ) , dan sebagainya .

            Kode dalam DLL biasanya dibagi di antara semua proses yang menggunakan DLL , yaitu, mereka menempati satu tempat di memori fisik , dan tidak mengambil ruang dalam file halaman . Jika memori fisik yang ditempati oleh bagian kode yang akan direklamasi , isinya dibuang , dan kemudian ulang langsung dari file DLL yang diperlukan .

            Berbeda dengan bagian kode , bagian data DLL biasanya swasta, yaitu , setiap proses menggunakan DLL memiliki salinan dari semua data DLL . Opsional , bagian data dapat dibuat bersama, yang memungkinkan antar-proses komunikasi melalui daerah ini memori bersama . Namun, karena pembatasan pengguna tidak berlaku untuk penggunaan memori bersama DLL , ini menciptakan lubang keamanan , yaitu satu proses dapat merusak data bersama , yang kemungkinan akan menyebabkan semua proses sharing lainnya untuk berperilaku tidak diinginkan . Sebagai contoh, sebuah proses yang berjalan di bawah account tamu dapat dengan cara ini korup proses lain berjalan di bawah account istimewa . Ini adalah alasan penting untuk menghindari penggunaan bagian bersama dalam DLL .

            Jika DLL dikompresi oleh packers executable tertentu (misalnya UPX ) , semua bagian kodenya ditandai sebagai membaca dan menulis , dan akan unshared . Bagian kode read - and- write , seperti bagian data pribadi , pribadi untuk setiap proses . Dengan demikian DLL dengan bagian data bersama tidak harus dikompresi jika mereka dimaksudkan untuk digunakan secara bersamaan oleh beberapa program , karena setiap contoh program yang akan harus membawa salinan sendiri dari DLL , sehingga peningkatan konsumsi memori .






b.      Import Library

Seperti perpustakaan statis, perpustakaan impor untuk DLL dicatat oleh ekstensi file. Lib. Sebagai contoh, kernel32.dll, perpustakaan dinamis utama untuk fungsi Windows 'dasar seperti pembuatan berkas dan manajemen memori, yang dihubungkan melalui kernel32.lib.

            Menghubungkan ke perpustakaan dinamis biasanya ditangani dengan menghubungkan ke sebuah perpustakaan impor ketika membangun atau menghubungkan untuk membuat file eksekusi. Executable yang dibuat kemudian berisi tabel alamat impor (IAT) dimana semua panggilan fungsi DLL yang direferensikan (masing-masing fungsi DLL direferensikan berisi entri sendiri dalam IAT). Pada saat run-time, IAT diisi dengan alamat yang tepat yang mengarah langsung ke fungsi dalam DLL terpisah dimuat.

c.       Resolusi simbol dan mengikat

Setiap fungsi yang diekspor oleh DLL diidentifikasi oleh ordinal numerik dan opsional nama. Demikian juga , fungsi dapat diimpor dari DLL baik oleh ordinal atau dengan nama . Ordinal tersebut merupakan posisi fungsi alamat pointer pada Address tabel DLL Ekspor . Adalah umum untuk fungsi internal yang akan diekspor oleh ordinal saja. Bagi sebagian besar fungsi Windows API hanya nama-nama yang diawetkan di rilis Windows yang berbeda , ordinals dapat berubah . Dengan demikian, kita tidak dapat dipercaya mengimpor fungsi API Windows dengan ordinals mereka .

            Mengimpor fungsi dengan ordinal memberikan kinerja yang hanya sedikit lebih baik daripada mengimpor mereka dengan nama : tabel ekspor DLL yang diperintahkan oleh nama , sehingga pencarian biner dapat digunakan untuk mencari fungsi. Indeks nama yang ditemukan kemudian digunakan untuk mencari ordinal dalam tabel Ekspor Ordinal . Pada 16 - bit Windows , tabel nama tidak diurutkan , sehingga overhead nama lookup jauh lebih terlihat .







Hal ini juga memungkinkan untuk mengikat dapat dieksekusi untuk versi tertentu dari sebuah DLL , yaitu , untuk menyelesaikan alamat fungsi yang diimpor pada saat kompilasi . Untuk impor terikat , linker akan menyimpan timestamp dan checksum dari DLL yang impor terikat . Pada saat run -time Windows memeriksa untuk melihat apakah versi yang sama dari perpustakaan yang digunakan, dan jika demikian , Windows bypasses memproses impor . Jika tidak , jika perpustakaan ini berbeda dari satu yang pasti , Windows proses impor secara normal .

            Bound executables beban agak lebih cepat jika mereka berjalan di lingkungan yang sama bahwa mereka dikompilasi untuk , dan waktu yang tepat sama jika mereka berjalan di lingkungan yang berbeda , sehingga tidak ada kelemahan untuk mengikat impor . Sebagai contoh, semua aplikasi standar Windows terikat pada DLL sistem rilis Windows masing-masing . Sebuah kesempatan yang baik untuk mengikat impor aplikasi untuk lingkungan target adalah saat instalasi aplikasi . Hal ini membuat perpustakaan ' terikat ' sampai update OS berikutnya . Memang, bagaimanapun , mengubah checksum dari executable , jadi itu bukan sesuatu yang bisa dilakukan dengan program ditandatangani , atau program yang dikelola oleh manajemen konfigurasi alat yang menggunakan checksum ( seperti MD5 checksum ) untuk mengelola versi berkas . Karena semakin Windows versi terbaru sudah pindah dari memiliki alamat tetap untuk setiap perpustakaan dimuat ( untuk alasan keamanan ) , peluang dan nilai mengikat eksekusi menurun .

4.      Compiler Menggunakan Bahasa C/C++

Microsoft Visual C ( MSVC ) menyediakan beberapa ekstensi untuk standar C+ + yang memungkinkan fungsi yang harus ditetapkan sebagai diimpor atau diekspor langsung dalam C++, kode ini telah diadopsi oleh Windows C lainnya dan C++ compiler , termasuk versi Windows GCC . Ekstensi ini menggunakan atribut __ declspec sebelum deklarasi fungsi . Perhatikan bahwa ketika fungsi C diakses dari C++ , mereka juga harus dinyatakan sebagai extern " C " di C++ kode , untuk menginformasikan compiler bahwa linkage C harus digunakan.

      Selain menentukan fungsi yang diimpor atau diekspor menggunakan __ declspec atribut , mereka mungkin tercantum dalam IMPOR EKSPOR atau bagian dari file DEF digunakan oleh proyek . File DEF diproses oleh linker , bukan compiler , dan dengan demikian tidak spesifik untuk C + + .




       Kompilasi DLL akan menghasilkan baik file DLL dan LIB . File LIB digunakan untuk menghubungkan melawan DLL pada saat kompilasi , itu tidak diperlukan untuk run-time menghubungkan . Kecuali DLL Anda adalah Component Object Model Server ( COM ) , file DLL harus ditempatkan dalam salah satu direktori yang tercantum dalam variabel lingkungan PATH , di direktori default sistem , atau dalam direktori yang sama dengan program menggunakannya . COM Server DLL terdaftar menggunakan regsvr32.exe , yang menempatkan lokasi DLL dan ID yang unik secara global nya ( GUID ) dalam registri . Program kemudian dapat menggunakan DLL dengan melihat GUID dalam registri untuk menemukan lokasinya .

5.      Keuntungan Menggunakan Dinamic Link Library

a)      Menggunakan lebih sedikit sumber daya
Apabila beberapa program menggunakan library fungsi yang sama, DLL dapat mengurangi duplikasi kode yang dimuat di disk dan memori fisik. Hal ini dapat sangat mempengaruhi kinerja tidak hanya program yang berjalan di latar depan, tetapi juga program lain yang berjalan pada sistem operasi Windows.

b)      Meningkatkan arsitektur modular
DLL membantu mempromosikan pengembangan modular program. Ini akan membantu Anda mengembangkan program besar yang memerlukan beberapa versi bahasa atau program yang memerlukan arsitektur modular. Contoh dari modular program adalah program akuntansi yang memiliki banyak modul yang dapat dimuat secara dinamis pada waktu jalan.


c)      Memudahkan penyebaran dan penginstalan
Saat fungsi dalam DLL memerlukan pembaruan atau perbaikan, penyebaran dan pemasangan DLL tidak memerlukan program untuk relinked dengan DLL. Selain itu, apabila beberapa program menggunakan DLL yang sama, beberapa program akan semua manfaat dari pembaruan atau perbaikan. Masalah ini lebih sering terjadi ketika Anda menggunakan DLL pihak ketiga yang diperbarui secara teratur atau diperbaiki.

d)     Keamanan Source Code Lebih Tinggi
Saat source code dimasukan kedalam DLL source code akan sulit dibuka oleh orang lain, sehingga orang lain tidak tau source code yang digunakan di dalam aplikasi tersebut.   Karena Dll memiliki kemanan yang sangat tinggi.




6.      Kerugian Menggunakan Dinamic Link Library
Pembuatan file Dll cenderung lebih rumit dan Ketika sebuah program atau DLL menggunakan fungsi DLL lainnya, program ini tidak lagi mandiri, dan program mungkin mengalami masalah jika ketergantungan rusak. Sebagai contoh, program mungkin tidak berjalan jika salah satu tindakan berikut terjadi:
·         DLL tergantung ditingkatkan ke versi baru.
·         DLL tergantung diperbaiki.
·         DLL tergantung akan ditimpa dengan versi yang lebih lama.
·         DLL tergantung akan dihapus dari komputer.
·         Aplikasi akan Error / Rusak jika salah satu dll error.
Tindakan ini umumnya disebut sebagai konflik DLL. Jika kompatibilitas mundur tidak didukung, program mungkin tidak berhasil dijalankan.

Apabila Kita Ingin Mengedit aplikasi tersebut, kita harus mengedit dll yang digunakan, kemudian di replace satu persatu dan di link kan lagi seperti pembuatan awal.

7.      Run-time menghubungkan dinamis

Untuk 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 mengekspor fungsi DLL, Anda dapat menambahkan kunci fungsi untuk fungsi DLL yang diekspor atau membuat berkas definisi (.def) modul yang mencantumkan fungsi DLL yang diekspor.

__declspec(dllexport)

Untuk menggunakan fungsi kunci, Anda harus menyatakan setiap fungsi yang ingin diekspor dengan kunci berikut ini:

__declspec(dllexport)

Biasanya, Anda akan menggunakan satu file header yang telah menentukan pernyataan dan ifdef pernyataan untuk memisahkan pernyataan ekspor dan impor pernyataan.

Biasanya, Anda akan menggunakan satu header file yang telah menentukan pernyataan dan pernyataan ifdef untuk memisahkan pernyataan ekspor dan impor pernyataan.


// SampleDLL.def
//
LIBRARY "sampleDLL"

EXPORTS
  HelloWorld

8.      Titik entri DLL

Anda juga dapat menggunakan berkas definisi modul untuk menyatakan fungsi DLL yang diekspor. Ketika Anda menggunakan berkas definisi modul, Anda tidak harus menambahkan kunci fungsi untuk fungsi DLL yang diekspor. Dalam berkas definisi modul, Anda menyatakan pernyataan Perpustakaan dan pernyataan ekspor untuk DLL. Kode berikut ini adalah contoh berkas definisi.

Kode berikut ini adalah contoh dari DLL yang dibuat dalam Visual C++ dengan menggunakan Win32 Dynamic-Link Perpustakaan jenis proyek.
               // SampleDLL.cpp
               #include "stdafx.h"
               #define EXPORTING_DLL
               #include "sampleDLL.h"
 
               BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                                                                             )
               {
                   return TRUE;
               }
               
               void HelloWorld()
               {
MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"),  MB_OK);
               }
 
               // File: SampleDLL.h
               //
               #ifndef INDLL_H
               #define INDLL_H
 
               #ifdef EXPORTING_DLL
               extern __declspec(dllexport) void HelloWorld() ;
               #else
               extern __declspec(dllimport) void HelloWorld() ;
               #endif
 
               #endif
Kode berikut adalah contoh Win32 Aplikasi proyek yang memanggil fungsi DLL diekspor di SampleDLL DLL.
               // SampleApp.cpp 
 
               #include "stdafx.h"
               #include "sampleDLL.h"
 
               int APIENTRY WinMain(HINSTANCE hInstance,
                                HINSTANCE hPrevInstance,
                               LPSTR     lpCmdLine,
                               int nCmdShow)
               {             
                              HelloWorld();
                              return 0;
               }
 
Catatan : Dalam waktu buka dinamis, Anda harus link SampleDLL.lib Impor perpustakaan yang dibuat ketika Anda membangun SampleDLL proyek.

Dalam dinamis run-time, menghubungkan, Anda menggunakan kode yang sama dengan kode berikut untuk memanggil SampleDLL.dll diekspor DLL fungsi.
               ...
               typedef VOID (*DLLPROC) (LPTSTR);
               ...
               HINSTANCE hinstDLL;
               DLLPROC HelloWorld;
               BOOL fFreeDLL;
 
               hinstDLL = LoadLibrary("sampleDLL.dll");
               if (hinstDLL != NULL)
               {
                                HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld");
                               if (HelloWorld != NULL)
                               (HelloWorld);
 
               fFreeDLL = FreeLibrary(hinstDLL);
               }
               ...

        B. Perbedaan Dinamic Link Library Dengan Header Di C++

1.      Perbedaan Menurut Pengertian

File header adalah sebuah file yang digunakan untuk mendefinisikan beberapa file macro, fungsi, variabel dan konstan. File header nantinya akan mengandung beberapa fungsi atau perintah yang akan digunakan dalam program. File header ini sangat penting, karena beberapa perintah tidak akan dapat dijalankan jika file header yang mendukung perintah tersebut tidak ditulis dalam program. File header ini memiliki ciri bereksistensi “.h” dan diarahkan oleh preprocessor dirrective #include sebagai gambaran kepada kompilator bahwa beberapa fungsi yang terdapat dalam file header tersebut diikutkan dalam pembuatan program. Sedangkan

File Dynamic Link Library (File Dll) adalah file yang mengandung kode-fungsi yang dapat dipanggil dari kode-executable (.exe) atau bisa juga di panggil dari file Dll yang lain. Paling simple kalo disebut file library windows karena umumnya hanya ada pada Sistem Operasi Windows, File Dll merupakan kode yang sudah dikompilasi dan dapat digunakan oleh program lain bias juga di gunakan oleh beberapa program.  Jika kita meletakan fungsi ke dalam dll, berarti fungsi tersebut dapat diakses oleh semua program pada saat yang bersamaan.

2.      Perbedaan Aplikasi Menurut Kapasitas Memory Space

Apabila kita membuat sebuah aplikasi hanya memanfa’atkan header saja, source code yang ada di dalam lembar kerja program (.cpp) akan cenderung banyak. Kinerja Akan melambat karena mendebug baris perintah terlalu banyak ( biasanya debug per baris ). Dan hasil Compile Aplikasi Akan Berukuran besar.

Sedangkan jika membuat sebuah aplikasi memanfa’atkan Dinamic Link Library. Code yang ada di dalam lembar kerja program (.cpp) akan cenderung lebih sedikit. Karena source – code induk ada di dalam filde dll tersebut. Dan kinerja akan lebih cepat dari pada tidak memakai .dll , dll bisa digunakan banyak aplikasi sekaligus. Seperti 5 buah aplikasi 1 dll. Bisa juga 5 dll digunakan dalam 1 buah aplikasi jga bisa.

NB : Tunggu Artikel Selanjutnya Tentang Pembuatan Dinamic Link Library Dengan Bahasa C++ .
 



       A.  Dinamic Link Library


1.      Pengertian Dinamic Link Library

Dynamic Link Library (File Dll) adalah file yang mengandung kode-fungsi yang dapat dipanggil dari kode-executable (.exe) atau bisa juga di panggil dari file Dll yang lain. Paling simple kalo disebut file library windows karena umumnya hanya ada pada Sistem Operasi Windows, File Dll merupakan kode yang sudah dikompilasi dan dapat digunakan oleh program lain bias juga di gunakan oleh beberapa program.  Jika kita meletakan fungsi ke dalam dll, berarti fungsi tersebut dapat diakses oleh semua program pada saat yang bersamaan.  File Dll biasanya ditulis dengan bahasa C/C++, Delphi atau bahasa lainnya yang mendukung Sistem Operasi Windows.


2.      Kegunaan Dinamic Link Library

Eksistensi dari File Dll paling utama ditujukan buat menyederhanakan suatu program. Karena progam tersebut tidak perlu mempunyai kode progam untuk fungsi umumnya, tinggal memanggil fungsi yang ada pada File Dll tersebut. Sebagai contoh sebelum kita membuat sebuah program perkalian, kita membuat terlebih dahulu source-code Fungsi perkalian di dalam file Dll, kemudian kita buat source-code aplikasi dan dimana source-code aplikasi tersebut kita tinggal memanggil fungsi perkalian yang sudah kita masukan di dalam File Dll Tersebut. 

Jadi dengan kata lain nama Dynamic Link Library bisa diartikan penyederhana program karena source-code program induk ada di dalam File Dll tersebut. Jika Di Dalam Windows dia adalah perpustakaan yang punya banyak list fungsi dan bisa dimanfaatkan program yang ada di windows. Mereka disebut link dinamis (dynamic link) karena mereka dimanfaatkan hanya ketika sebuah program memanggil mereka, dan merekapun juga berjalan di ruang memori (memory area) tersendiri. Lebih dari satu program dapat menggunakan fungsi DLL,  bahkan pada waktu yang sama. Sehingga struktur program aplikasi menjadi lebih sederhana, ringan dan tidak banyak memakan ruang space.



3.      Fitur Dinamic Link Library

a.       Management Memory

Pada Windows API , file DLL akan disusun menjadi beberapa bagian . Setiap bagian telah menetapkan sendiri atribut , seperti menjadi dapat ditulisi atau read-only , executable ( kode ) atau non - executable ( untuk data ) , dan sebagainya .

            Kode dalam DLL biasanya dibagi di antara semua proses yang menggunakan DLL , yaitu, mereka menempati satu tempat di memori fisik , dan tidak mengambil ruang dalam file halaman . Jika memori fisik yang ditempati oleh bagian kode yang akan direklamasi , isinya dibuang , dan kemudian ulang langsung dari file DLL yang diperlukan .

            Berbeda dengan bagian kode , bagian data DLL biasanya swasta, yaitu , setiap proses menggunakan DLL memiliki salinan dari semua data DLL . Opsional , bagian data dapat dibuat bersama, yang memungkinkan antar-proses komunikasi melalui daerah ini memori bersama . Namun, karena pembatasan pengguna tidak berlaku untuk penggunaan memori bersama DLL , ini menciptakan lubang keamanan , yaitu satu proses dapat merusak data bersama , yang kemungkinan akan menyebabkan semua proses sharing lainnya untuk berperilaku tidak diinginkan . Sebagai contoh, sebuah proses yang berjalan di bawah account tamu dapat dengan cara ini korup proses lain berjalan di bawah account istimewa . Ini adalah alasan penting untuk menghindari penggunaan bagian bersama dalam DLL .

            Jika DLL dikompresi oleh packers executable tertentu (misalnya UPX ) , semua bagian kodenya ditandai sebagai membaca dan menulis , dan akan unshared . Bagian kode read - and- write , seperti bagian data pribadi , pribadi untuk setiap proses . Dengan demikian DLL dengan bagian data bersama tidak harus dikompresi jika mereka dimaksudkan untuk digunakan secara bersamaan oleh beberapa program , karena setiap contoh program yang akan harus membawa salinan sendiri dari DLL , sehingga peningkatan konsumsi memori .






b.      Import Library

Seperti perpustakaan statis, perpustakaan impor untuk DLL dicatat oleh ekstensi file. Lib. Sebagai contoh, kernel32.dll, perpustakaan dinamis utama untuk fungsi Windows 'dasar seperti pembuatan berkas dan manajemen memori, yang dihubungkan melalui kernel32.lib.

            Menghubungkan ke perpustakaan dinamis biasanya ditangani dengan menghubungkan ke sebuah perpustakaan impor ketika membangun atau menghubungkan untuk membuat file eksekusi. Executable yang dibuat kemudian berisi tabel alamat impor (IAT) dimana semua panggilan fungsi DLL yang direferensikan (masing-masing fungsi DLL direferensikan berisi entri sendiri dalam IAT). Pada saat run-time, IAT diisi dengan alamat yang tepat yang mengarah langsung ke fungsi dalam DLL terpisah dimuat.

c.       Resolusi simbol dan mengikat

Setiap fungsi yang diekspor oleh DLL diidentifikasi oleh ordinal numerik dan opsional nama. Demikian juga , fungsi dapat diimpor dari DLL baik oleh ordinal atau dengan nama . Ordinal tersebut merupakan posisi fungsi alamat pointer pada Address tabel DLL Ekspor . Adalah umum untuk fungsi internal yang akan diekspor oleh ordinal saja. Bagi sebagian besar fungsi Windows API hanya nama-nama yang diawetkan di rilis Windows yang berbeda , ordinals dapat berubah . Dengan demikian, kita tidak dapat dipercaya mengimpor fungsi API Windows dengan ordinals mereka .

            Mengimpor fungsi dengan ordinal memberikan kinerja yang hanya sedikit lebih baik daripada mengimpor mereka dengan nama : tabel ekspor DLL yang diperintahkan oleh nama , sehingga pencarian biner dapat digunakan untuk mencari fungsi. Indeks nama yang ditemukan kemudian digunakan untuk mencari ordinal dalam tabel Ekspor Ordinal . Pada 16 - bit Windows , tabel nama tidak diurutkan , sehingga overhead nama lookup jauh lebih terlihat .







Hal ini juga memungkinkan untuk mengikat dapat dieksekusi untuk versi tertentu dari sebuah DLL , yaitu , untuk menyelesaikan alamat fungsi yang diimpor pada saat kompilasi . Untuk impor terikat , linker akan menyimpan timestamp dan checksum dari DLL yang impor terikat . Pada saat run -time Windows memeriksa untuk melihat apakah versi yang sama dari perpustakaan yang digunakan, dan jika demikian , Windows bypasses memproses impor . Jika tidak , jika perpustakaan ini berbeda dari satu yang pasti , Windows proses impor secara normal .

            Bound executables beban agak lebih cepat jika mereka berjalan di lingkungan yang sama bahwa mereka dikompilasi untuk , dan waktu yang tepat sama jika mereka berjalan di lingkungan yang berbeda , sehingga tidak ada kelemahan untuk mengikat impor . Sebagai contoh, semua aplikasi standar Windows terikat pada DLL sistem rilis Windows masing-masing . Sebuah kesempatan yang baik untuk mengikat impor aplikasi untuk lingkungan target adalah saat instalasi aplikasi . Hal ini membuat perpustakaan ' terikat ' sampai update OS berikutnya . Memang, bagaimanapun , mengubah checksum dari executable , jadi itu bukan sesuatu yang bisa dilakukan dengan program ditandatangani , atau program yang dikelola oleh manajemen konfigurasi alat yang menggunakan checksum ( seperti MD5 checksum ) untuk mengelola versi berkas . Karena semakin Windows versi terbaru sudah pindah dari memiliki alamat tetap untuk setiap perpustakaan dimuat ( untuk alasan keamanan ) , peluang dan nilai mengikat eksekusi menurun .

4.      Compiler Menggunakan Bahasa C/C++

Microsoft Visual C ( MSVC ) menyediakan beberapa ekstensi untuk standar C+ + yang memungkinkan fungsi yang harus ditetapkan sebagai diimpor atau diekspor langsung dalam C++, kode ini telah diadopsi oleh Windows C lainnya dan C++ compiler , termasuk versi Windows GCC . Ekstensi ini menggunakan atribut __ declspec sebelum deklarasi fungsi . Perhatikan bahwa ketika fungsi C diakses dari C++ , mereka juga harus dinyatakan sebagai extern " C " di C++ kode , untuk menginformasikan compiler bahwa linkage C harus digunakan.

      Selain menentukan fungsi yang diimpor atau diekspor menggunakan __ declspec atribut , mereka mungkin tercantum dalam IMPOR EKSPOR atau bagian dari file DEF digunakan oleh proyek . File DEF diproses oleh linker , bukan compiler , dan dengan demikian tidak spesifik untuk C + + .




       Kompilasi DLL akan menghasilkan baik file DLL dan LIB . File LIB digunakan untuk menghubungkan melawan DLL pada saat kompilasi , itu tidak diperlukan untuk run-time menghubungkan . Kecuali DLL Anda adalah Component Object Model Server ( COM ) , file DLL harus ditempatkan dalam salah satu direktori yang tercantum dalam variabel lingkungan PATH , di direktori default sistem , atau dalam direktori yang sama dengan program menggunakannya . COM Server DLL terdaftar menggunakan regsvr32.exe , yang menempatkan lokasi DLL dan ID yang unik secara global nya ( GUID ) dalam registri . Program kemudian dapat menggunakan DLL dengan melihat GUID dalam registri untuk menemukan lokasinya .

5.      Keuntungan Menggunakan Dinamic Link Library

a)      Menggunakan lebih sedikit sumber daya
Apabila beberapa program menggunakan library fungsi yang sama, DLL dapat mengurangi duplikasi kode yang dimuat di disk dan memori fisik. Hal ini dapat sangat mempengaruhi kinerja tidak hanya program yang berjalan di latar depan, tetapi juga program lain yang berjalan pada sistem operasi Windows.

b)      Meningkatkan arsitektur modular
DLL membantu mempromosikan pengembangan modular program. Ini akan membantu Anda mengembangkan program besar yang memerlukan beberapa versi bahasa atau program yang memerlukan arsitektur modular. Contoh dari modular program adalah program akuntansi yang memiliki banyak modul yang dapat dimuat secara dinamis pada waktu jalan.


c)      Memudahkan penyebaran dan penginstalan
Saat fungsi dalam DLL memerlukan pembaruan atau perbaikan, penyebaran dan pemasangan DLL tidak memerlukan program untuk relinked dengan DLL. Selain itu, apabila beberapa program menggunakan DLL yang sama, beberapa program akan semua manfaat dari pembaruan atau perbaikan. Masalah ini lebih sering terjadi ketika Anda menggunakan DLL pihak ketiga yang diperbarui secara teratur atau diperbaiki.

d)     Keamanan Source Code Lebih Tinggi
Saat source code dimasukan kedalam DLL source code akan sulit dibuka oleh orang lain, sehingga orang lain tidak tau source code yang digunakan di dalam aplikasi tersebut.   Karena Dll memiliki kemanan yang sangat tinggi.




6.      Kerugian Menggunakan Dinamic Link Library
Pembuatan file Dll cenderung lebih rumit dan Ketika sebuah program atau DLL menggunakan fungsi DLL lainnya, program ini tidak lagi mandiri, dan program mungkin mengalami masalah jika ketergantungan rusak. Sebagai contoh, program mungkin tidak berjalan jika salah satu tindakan berikut terjadi:
·         DLL tergantung ditingkatkan ke versi baru.
·         DLL tergantung diperbaiki.
·         DLL tergantung akan ditimpa dengan versi yang lebih lama.
·         DLL tergantung akan dihapus dari komputer.
·         Aplikasi akan Error / Rusak jika salah satu dll error.
Tindakan ini umumnya disebut sebagai konflik DLL. Jika kompatibilitas mundur tidak didukung, program mungkin tidak berhasil dijalankan.

Apabila Kita Ingin Mengedit aplikasi tersebut, kita harus mengedit dll yang digunakan, kemudian di replace satu persatu dan di link kan lagi seperti pembuatan awal.

7.      Run-time menghubungkan dinamis

Untuk 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 mengekspor fungsi DLL, Anda dapat menambahkan kunci fungsi untuk fungsi DLL yang diekspor atau membuat berkas definisi (.def) modul yang mencantumkan fungsi DLL yang diekspor.

__declspec(dllexport)

Untuk menggunakan fungsi kunci, Anda harus menyatakan setiap fungsi yang ingin diekspor dengan kunci berikut ini:

__declspec(dllexport)

Biasanya, Anda akan menggunakan satu file header yang telah menentukan pernyataan dan ifdef pernyataan untuk memisahkan pernyataan ekspor dan impor pernyataan.

Biasanya, Anda akan menggunakan satu header file yang telah menentukan pernyataan dan pernyataan ifdef untuk memisahkan pernyataan ekspor dan impor pernyataan.


// SampleDLL.def
//
LIBRARY "sampleDLL"

EXPORTS
  HelloWorld

8.      Titik entri DLL

Anda juga dapat menggunakan berkas definisi modul untuk menyatakan fungsi DLL yang diekspor. Ketika Anda menggunakan berkas definisi modul, Anda tidak harus menambahkan kunci fungsi untuk fungsi DLL yang diekspor. Dalam berkas definisi modul, Anda menyatakan pernyataan Perpustakaan dan pernyataan ekspor untuk DLL. Kode berikut ini adalah contoh berkas definisi.

Kode berikut ini adalah contoh dari DLL yang dibuat dalam Visual C++ dengan menggunakan Win32 Dynamic-Link Perpustakaan jenis proyek.
               // SampleDLL.cpp
               #include "stdafx.h"
               #define EXPORTING_DLL
               #include "sampleDLL.h"
 
               BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                                                                             )
               {
                   return TRUE;
               }
               
               void HelloWorld()
               {
MessageBox( NULL, TEXT("Hello World"), TEXT("In a DLL"),  MB_OK);
               }
 
               // File: SampleDLL.h
               //
               #ifndef INDLL_H
               #define INDLL_H
 
               #ifdef EXPORTING_DLL
               extern __declspec(dllexport) void HelloWorld() ;
               #else
               extern __declspec(dllimport) void HelloWorld() ;
               #endif
 
               #endif
Kode berikut adalah contoh Win32 Aplikasi proyek yang memanggil fungsi DLL diekspor di SampleDLL DLL.
               // SampleApp.cpp 
 
               #include "stdafx.h"
               #include "sampleDLL.h"
 
               int APIENTRY WinMain(HINSTANCE hInstance,
                                HINSTANCE hPrevInstance,
                               LPSTR     lpCmdLine,
                               int nCmdShow)
               {             
                              HelloWorld();
                              return 0;
               }
 
Catatan : Dalam waktu buka dinamis, Anda harus link SampleDLL.lib Impor perpustakaan yang dibuat ketika Anda membangun SampleDLL proyek.

Dalam dinamis run-time, menghubungkan, Anda menggunakan kode yang sama dengan kode berikut untuk memanggil SampleDLL.dll diekspor DLL fungsi.
               ...
               typedef VOID (*DLLPROC) (LPTSTR);
               ...
               HINSTANCE hinstDLL;
               DLLPROC HelloWorld;
               BOOL fFreeDLL;
 
               hinstDLL = LoadLibrary("sampleDLL.dll");
               if (hinstDLL != NULL)
               {
                                HelloWorld = (DLLPROC) GetProcAddress(hinstDLL, "HelloWorld");
                               if (HelloWorld != NULL)
                               (HelloWorld);
 
               fFreeDLL = FreeLibrary(hinstDLL);
               }
               ...

        B. Perbedaan Dinamic Link Library Dengan Header Di C++

1.      Perbedaan Menurut Pengertian

File header adalah sebuah file yang digunakan untuk mendefinisikan beberapa file macro, fungsi, variabel dan konstan. File header nantinya akan mengandung beberapa fungsi atau perintah yang akan digunakan dalam program. File header ini sangat penting, karena beberapa perintah tidak akan dapat dijalankan jika file header yang mendukung perintah tersebut tidak ditulis dalam program. File header ini memiliki ciri bereksistensi “.h” dan diarahkan oleh preprocessor dirrective #include sebagai gambaran kepada kompilator bahwa beberapa fungsi yang terdapat dalam file header tersebut diikutkan dalam pembuatan program. Sedangkan

File Dynamic Link Library (File Dll) adalah file yang mengandung kode-fungsi yang dapat dipanggil dari kode-executable (.exe) atau bisa juga di panggil dari file Dll yang lain. Paling simple kalo disebut file library windows karena umumnya hanya ada pada Sistem Operasi Windows, File Dll merupakan kode yang sudah dikompilasi dan dapat digunakan oleh program lain bias juga di gunakan oleh beberapa program.  Jika kita meletakan fungsi ke dalam dll, berarti fungsi tersebut dapat diakses oleh semua program pada saat yang bersamaan.

2.      Perbedaan Aplikasi Menurut Kapasitas Memory Space

Apabila kita membuat sebuah aplikasi hanya memanfa’atkan header saja, source code yang ada di dalam lembar kerja program (.cpp) akan cenderung banyak. Kinerja Akan melambat karena mendebug baris perintah terlalu banyak ( biasanya debug per baris ). Dan hasil Compile Aplikasi Akan Berukuran besar.

Sedangkan jika membuat sebuah aplikasi memanfa’atkan Dinamic Link Library. Code yang ada di dalam lembar kerja program (.cpp) akan cenderung lebih sedikit. Karena source – code induk ada di dalam filde dll tersebut. Dan kinerja akan lebih cepat dari pada tidak memakai .dll , dll bisa digunakan banyak aplikasi sekaligus. Seperti 5 buah aplikasi 1 dll. Bisa juga 5 dll digunakan dalam 1 buah aplikasi jga bisa.

NB : Tunggu Artikel Selanjutnya Tentang Pembuatan Dinamic Link Library Dengan Bahasa C++ .