Membuat File dll di Windows (C Programming)

Prasyarat: Saya harap Anda sudah mengenal bahasa C/C++ dan pernah menggunakan DevCpp/Pelles C untuk membuat program yang paling sederhana sekalipun untuk memperlancar pemahaman artikel ini, kalo belum juga ya gak apa2πŸ˜€

Dll (bukan “dan lain-lain”πŸ˜€ ) merupakan pustaka dinamis standard windows yang terdiri dari beberapa fungsi atau prosedur yang diload dan diakses oleh program luar (aplikasi maupun pustaka lainnya) pada saat aplikasi dijalankan dan dihapus dari memori jika tidak ada lagi aplikasi yang memanggilnya. Dll ini bisa diakses oleh beberapa aplikasi dan pustaka lain secara bersama-sama (shared library).

Banyak fungsi system pada Windows diakses melalui dll. Untuk membuat file dll ataupun mengaksesnya kita bisa menggunakan berbagai bahasa pemrograman di llingkungan Windows, salah satunya adalah bahasa C/C++. Di tutorial ini kita akan mencoba membuat file dll menggunakan bahasa C (bukan C++) yang umum diajarkan di kuliahan, dan menggunakan IDE DevCpp/wxDevCpp. (Anda bisa menggunakan IDE lain kesukaan Anda, yang penting prinsipnya sama).

Bukalah IDE DevCpp/wxDevCpp, buat Project baru dengan memilih File->New->Project atau pilih icon pada toolbar New Project, kemudian pilih tab Basic. Akan muncul pop-up window New Project… Pilih template dll sebagai main project. Tuliskan nama file dll yang akan kita buat sebagai nama project dll kita, misalkan dalam contoh ini kita beri nama simple01. Jangan lupa pilih C Project pada radio button sebelah kanan bawah. Pilih lokasi penyimpanan pada direktori kerja kita.

OK… kita akan melihat sebuah project dll kita yang bernama simple01 dan dua buah file source dll.h dan dllmain.c. Ini adalah template sekaligus contoh sederhana dll yang akan kita buat. Bila kita compile maka akan menghasilkan file dll dengan nama simple01 yang berisi sebuah prosedur menampilkan message box pada window (prosedur HelloWorld).
Sesederhana itu? Ya, tentu saja. Jika kita mau menambah fungsionalitas atau prosedur pada dll yang hendak kita buat kita tinggal masukan dalam file dllmain.c fungsi atau prosedur yang kita inginkan dan mendeklarasikannya di dll.h (atau bisa anda ubah sesuai dengan yang Anda kehendaki).

Baiklah, sekarang kita ambil sebuah contoh, kita akan memasukkan ke dalam dll itu 2 buah fungsi (umumnya dalam satu file dll akan memiliki beberapa fungsi yang memiliki karakteristik yang sama untuk memudahkan, misal file dll untuk menghitung luas, semua fungsi penghitung luas dimasukan dalam satu dll). Fungsi pertama yang akan kita letakan dalam dll adalah mencari suku ke-n dari suatu barisan Fibonacci dan suku ke-n dari barisan Aritmatika. Ingatkan rumus tuk kedua fungsi ini? Kalo gak ingat nih saya kasih tau disini, untuk barisan Fibonacci (UFn) rumusnya

Ufn = 1, untuk n = 0 or n = 1
Ufn = Ufn-1 + Ufn-2 untuk n>1

Untuk barisan Aritmatika (UAn):

UAn= a + (n-1) *b, dimana: a = suku pertama barisan aritmatika, b = interval antar barisan.

Semua n adalah bilangan bulat positif.

Disini kita bisa melihat untuk UF masukannya berupa satu parameter yaitu n, dan Barisan Aritmatika masukannya ada 3 yaitu n, a, dan b yang kesemuanya adalah bilangan bulat (kita batasi hanya sampai 35). Di bawah ini adalah code untuk fungsi fibonacci:

DLLIMPORT long Ufibo (int n) {
int i;
long last,next_last,answer; last = 1;
next_last = 1;
if(n==0 || n==1)
answer=1;
else {
for(i=2;i<=n;i++) {
answer = last + next_last;
next_last = last;
last = answer;
}
}
return(answer);
}

Sedangkan untuk fungsi aritmatika kurang lebih seperti ini:

DLLIMPORT long UArit (short n, short a, shotr b) {
return a + (n-1) * b;
}

Langkah selanjutnya kita deklarasikan nama kedua fungsi tersebut ke dll.h dan sebelumnya kita hapus terlebih dahulu prosedur HelloWorld dalam deklarasi (karena kita tidak akan menggunakannya bukan :D). Sehingga dll.h kita akan tampak seperti ini:


#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */

//DLLIMPORT void HelloWorld (void); --> prosedur default template devcpp

DLLIMPORT long Ufibo(int n);
DLLIMPORT long UArit(int n, int a, int b);

#endif /* _DLL_H_ */

Kemudian masukan kedua kode/fungsi tersebut diantara baris kode dalam dllmain.c seperti dalam gambar dibawah ini:

InsertCode

Compile project kita.. Jika tidak ada kesalahan maka di direktori kerja kita telah tercipta file simple01.dll yang berisi dua fungsi yang kita buat barusan yaitu Ufibo dan UArit. Nah di artikel mendatang akan saya jelaskan bagaimana mengggunakan file dll ini dalam program C kita. Bisa anda lihat disini.

Sampai disini dulu. Selamat mencoba dan berkreasi.

Ada pertanyaan?πŸ™‚

#ifndef _DLL_H_
#define _DLL_H_

#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */

//DLLIMPORT void HelloWorld (void); –> prosedur default template devcpp

DLLIMPORT long Ufibo(int n);
DLLIMPORT long UArit(int n, int a, int b);

#endif /* _DLL_H_ */

3 Responses to Membuat File dll di Windows (C Programming)

  1. jakong says:

    bagaimana denga c++ apakah sama?
    _______________________________
    Pada dsarnya sama hanya beberapa syntax yang berbeda. Kalo kita menggunakan DevCpp, perubahan itu langsung terlihat pada kode yang di-generate oleh devCpp. Silahkan mencobaπŸ˜€

  2. novhard says:

    kk punya source code nya ga?
    kalo ada share dong ..
    buat di baca-baca …

  3. putri says:

    put masih lom tahu banyak tentang file2 window..tapi dll cukup memberi referensi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: