COM DLL Akses MySQL – Bagian 2: Membuat Project di Visual Studio 2010


Tulisan ini merupakan bagian dari panduan membuat COM DLL (ATL) di Visual Studio 2010 yang mengakses MySQL atas request Albert Antonius:

Langkah paling awal tentu saja membuka Visual Studio 2010.  Klik pada New Projects.   Kemudian di pilihan template,  cari yang namanya Visual C++, ATL.  Lalu pilih ATL Project, misalnya LatihanCOM.  Berikan nama pada project tersebut, lalu klik tombol OK.  Visual Studio 2010 akan menampilkan ATL Project Wizard.  Kita tidak perlu melakukan perubahan disini sehingga cukup klik tombol Finish.

Setelah proyek dibuat, langkah penting yang perlu kamu lakukan adalah mengubah Solution Configurations dari Debug menjadi Release seperti yang terlihat pada gambar berikut ini:

Solutions Configuration

Solutions Configuration

Jika kamu lupa melakukan langkah ini dan merubah configuration belakangan, maka kamu perlu mengulang langkah-langkah setelah ini dari awal!!

Sekarang, klik kanan pada proyek LatihanCOM, lalu pilih Properties.  Kita akan melakukan beberapa perubahan disini.

Di Configuration Properties, pilih C/C++,  General.  Kemudian klik drop-down di Additional Include Directories dan pilih <Edit…> seperti yang terlihat pada gambar berikut ini:

Mengatur Additional Include Directories

Mengatur Additional Include Directories

Akan muncul dialog Additional Include Directories.  Klik pada tombol New Line (Ctrl-Insert).  Akan muncul sebuah baris untuk mengisi lokasi direktori.  Klik tombol di kanannya  untuk mempermudah browse file seperti yang terlihat di gambar berikut ini:

Menambah Directori Include

Menambah Directori Include

Pada dialog browse yang muncul, pilih direktori include yang berada di direktori ConnectorCPP (output pada bagian 1), kemudian klik Select Folder.

Lakukan hal yang sama kembali.  Klik tombol New Line (Ctrl-Insert), kali ini pilih direktori include yang berada di lokasi instalasi MySQL.  Misalnya, jika MySQL kamu ada di C:\xampp\mysql, maka folder ini adalah C:\xampp\mysql\include.

Kembali lakukan hal yang sama.  Klik tombol New Line (Ctrl-Insert), dan pilih direktori yang berisi Boost (lihat bagian 1).

Jika kamu melakukannya dengan benar, dialog-mu akan terlihat seperti ini (direktori ini mungkin bisa berbeda tergantung pada drive dan nama yang kamu pakai):

Include Directories

Include Directories

Klik tombol OK.

Sebenarnya apa fungsi direktori tersebut?  Kalau kamu lihat, direktori tersebut berisi file header (diakhiri dengan *.h).  Kecuali untuk boost_1_50_0, di dalam subfolder boost terdapat file hpp (precompiled header).  Semua file ini dipakai dengan cara #include.  Kamu masih ingat bukan dengan #include <iostream> atau #include <stdio.h> di pelajaran C++ ?  Yup, benar… iostream.h dan stdio.h adalah file header yang sudah ada di Visual C++.  Tapi file header yang akan kamu pakai adalah file header yang tidak berada pada lokasi direktori standard.  Itu sebabnya kamu perlu memberitahu Visual C++ untuk mencari ke direktori mana, seandainya kamu memberikan #include “mysql_connection.h”.

Sekarang kita akan beralih ke Preprocessor (masih di bawah C/C++).   Pada baris pertama terdapat Preprocessor Definitions.  Kita perlu menambahkan sebuah definisi baru karena kita akan memakai static library (ini adalah persyaratan dari Connector/C++ bukan dari Visual C++).  Klik tombol drop-down di bagian kanan, kemudian klik pada <Edit…>.  Tambahan definisi CPPCONN_PUBLIC_FUNC= sehingga dialog yang muncul akan terlihat seperti pada gambar:

Preprocessor Definitions

Preprocessor Definitions

Klik tombol OK.

Berikutnya, cari bagian Precompiled Headers.  Pada bagian Precompiled Header, ganti menjadi Not Using Precompiled Headers.  Ini adalah rekomendasi dari Boost, karena kita tidak akan memakai  precompiled header yang kita buat sendiri.

Ok, pengaturan untuk compiler C++ sudah selesai.  Sekarang kita akan melakukan pengaturan pada linker.

Buka Linker, General, kemudian cari bagian Per-user Redirection.  Ganti menjadi Yes, sehingga registry yang seharusnya ditulis ke HKEY_CLASSES_ROOT akan ditulis ke HKEY_CURRENT_USER.  Kenapa begitu?  Karena jika kamu menjalankan Visual Studio 2010 sebagai user biasa, maka kamu tidak akan punya akses untuk menulis ke HKEY_CLASSES_ROOT.

Sekarang kita beralih ke bawahnya, ke bagian Linker, General, Additional Library Directories.  Yang ini hampir mirip seperti di Addition Include Directories.  Klik pada drop-down, kemudian pilih <Edit…>.  

Pada dialog Additional Library Directories yang muncul, klik pada tombol New Line (Ctrl-Insert), kemudian browse ke folder lib yang ada di ConnectorCPP (output pada bagian 1).

Lakukan hal yang sama kembali.  Klik pada tombol New Line (Ctrl-Insert), tapi kali ini browse ke folder lib yang terletak di lokasi instalasi MySQL kamu.

Jika kamu melakukannya dengan benar, dialog-mu akan terlihat seperti pada gambar berikut ini:

Additional Library Directories

Additional Library Directories

Sebenarnya buat apa melakukan pengaturan Additional Library Directories?  Karena kamu memakai library tambahan yang bukan bawaan dari Visual C++.  Dan kamu perlu memberitahu pada Visual C++ dimana harus mencari library tambahan yang kamu pakai.

Ok, jadi apa nama library yang kamu pakai?  Kamu belum memberitahukannya pada Visual C++.  Jadi, pilih Linker, Input, kemudian klik pada drop-down di Additional Dependencies.  Kemudian klik pada <Edit…>.  Akan muncul sebuah dialog.  Tambahkan mysqlcppconn-static.lib dan libmysql.lib seperti yang terlihat di gambar berikut ini:

Additional Dependencies

Additional Dependencies

Klik tombol OK.

Kamu tentu masih ingat dengan mysqlcppconn-static.lib yang kamu hasilkan di bagian 1 dari artikel ini.  Ini adalah sebuah static library.  Pada jenis library ini, kode program library akan digabungkan ke dalam DLL  hasil akhir-mu nanti.  Hal ini menyebabkan ukuran DLL-mu bertambah besar, tetapi lebih cepat.  Kebalikan dari static library adalah dynamic library.  Ingat file mysqlcppconn.dll yang juga kamu hasilkan?  Ini adalah dynamic library.  Bila kamu memakai dynamic library, kamu harus memastikan file dll ini selalu ada di sistem pengguna.  Keuntungannya dibanding static library adalah ukuran program lebih kecil karena kode program library tidak digabungkan dengan DLL kamu melainkan ada di file DLL lain yang terpisah.

Pada artikel ini, kamu akan memakai static library sehingga kamu mengisi mysqlcppconn-static.lib.

Lalu apa itu libmysql.lib?  Ini adalah library Connector/C.  Yup, Connector/C++ dibangun berdasarkan Connector/C sehingga tetap dibutuhkan library versi bahasa C.  Anggap saja Connector/C++ memakai Connector/C tetapi dengan menyediakan sebuah lapisan abstraksi tersendiri yang OOP dan lebih mudah dipakai sehingga pengguna tidak perlu memanggil Connector/C secara langsung.  Kamu bisa meng-install Connector/C secara terpisah, tetapi beruntungnya, library C ini  sudah ter-install bersama dengan MySQL Server.

Klik tombol OK untuk menutup dialog properties.  Setelah pengaturan proyek selesai, kita siap untuk membuat kode program.

Perihal Solid Snake
I'm nothing...

7 Responses to COM DLL Akses MySQL – Bagian 2: Membuat Project di Visual Studio 2010

  1. Ping-balik: COM DLL Akses MySQL – Bagian 1: Membuat Library « The Solid Snake

  2. Ping-balik: COM DLL Akses MySQL – Bagian 3: Operasi Database Insert « The Solid Snake

  3. Ping-balik: COM DLL Akses MySQL – Bagian 4: Membuat Operasi CRUD Untuk Tabel Mahasiswa « The Solid Snake

  4. Ping-balik: COM DLL Akses MySQL – Bagian 5: Implementasi Kode Program « The Solid Snake

  5. tvianty mengatakan:

    Kenapa Solution Configurations dari Debug menjadi Release?
    Tolong diberikan penjelasan tentang ini?

    Terima kasih sblm-nya

    • Solid Snake mengatakan:

      Pada pemograman C/C++, biasanya terdapat beberapa konfigurasi seperti “Debug” dan “Release” yang akan menghasilkan binary yang berbeda (walaupun outputnya sama). Konfigurasi tersebut mewakili pengaturan compiler & linker yang berbeda.

      Biasanya konfigurasi “Debug” biasanya memiliki proses menghasilkan binary yang lebih singkat. Hasilnya juga lebih mudah di-debug. Konfigurasi ini lebih tepat dipakai selama proses pembuatan program (untuk mencoba menjalankan program).

      Sementara itu konfigurasi “Release” biasanya menghasilkan binary dengan ukuran lebih kecil dan lebih optimal (seperti lebih cepat dan lebih hemat memori), tetapi proses building menjadi lebih lama. Konfigurasi ini lebih tepat dipakai untuk membuat binary yang didistribusikan ke pengguna.

      Pada artikel sebelumnya, saya men-build library Connector/C++ dengan konfigurasi “Release”. Oleh sebab itu, di aplikasi yang memakainya, sebaiknya juga memiliki konfigurasi yang sama (“Release”). Tujuannya adalah untuk menghindari crash yang tak terduga di kemudian hari. Hal ini disarankan oleh pihak MySQL yang dapat dibaca di https://dev.mysql.com/doc/refman/5.6/en/connector-cpp-bugs.html (baca point ketiga).

      • tvianty mengatakan:

        Terima kasih atas penjelasannya. Ini sangat membantu saya.🙂

        Saya mencoba memasukkan lib Connector/C++ yg di-build dgn konfigurasi “Release” kedalam aplikasi yang sedang saya coba buat dgn konfigurasi “Debug”. Akibatnya saat Select data dr table yg ada di dB dgn memanggil fungsi res->getString(1);
        Maka di Console akan muncul string panjang……. walaupun isi data sebenarnya ada di antara karakter2 tersebut.

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: