COM DLL Akses MySQL – Bagian 1: Membuat Library


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

Library yang saya build dengan Visual Studio 2010 dan MySQL 5.5.9 dapat ditemukan di https://docs.google.com/open?id=0B-_rVDnaVRCbQVlfbmktcDZXOEE.  Kamu boleh melewati bagian ini dan memakai library yang saya build atau yang disediakan di situs MySQL, tetapi library yang ada belum tentu cocok untuk sistem kamu.

Langkah pertama sebelum kamu mulai membuat kode program adalah mencari library untuk mengakses MySQL di Windows.  Kenapa?  Karena Visual C++ secara bawaan tidak menyediakan API untuk memanggil MySQL.  Kalau kamu mau, kamu bisa menggunakan ADO.  Tapi di artikel ini, kamu akan menggunakan API yang lebih cepat yaitu MySQL Connector/C++.  Pada saat tulisan ini dibuat, versi terakhir yang tersedia adalah versi 1.1.

Buka halaman http://dev.mysql.com/downloads/connector/cpp/ untuk download library yang dibutuhkan.  Tunggu… “Mana yang harus saya pilih?” demikian kamu bertanya padaku.  Sebaiknya kamu download mysql-connector-c++-1.1.0.zip.  Setelah kamu extract, kamu akan menemukan kode program dan header, yang TIDAK bisa langsung kamu pakai!!

“Apa?  Menyuruh saya men-download sesuatu yang tidak bisa langsung saya pakai?” kamu pasti keberatan, “Saya sibuk dan saya perlu cara instan!!!”  Jika kamu berpikir demikian, maka kamu perlu ingat kembali bahwa kita berada di dunia C++, sebuah dunia yang sangat terikat pada platform.  Kamu pasti sudah sering mendengar cerita tentang Java yang multi platform,  kamu bahkan sudah merasakan bagaimana memakai library hanya dengan menambahkan file JAR,  dan kamu akan jarang sekali perlu menghasilkan JAR ini secara manual dari source code.  Tapi Java tidak bisa segalanya, dan kadang-kadang kita butuh C++ yang  TIDAK multi platform.  Sedikit perbedaan versi sistem operasi dan perbedaan versi compiler bisa membuat sebuah library C++ menjadi usang dan penuh pesan kesalahan.  Oleh sebab itu, lebih baik kita menghasilkan library dari source code sehingga kita bisa yakin library tersebut cocok dengan sistem kita.   Pada halaman download terdapat peringatan seperti ini “One problem that can occur is when the tools you use to build your application are not compatible with the tools used to build the binary versions of MySQL Connector/C++. Ideally, you need to build your application with the same tools that were used to build the MySQL Connector/C++ binaries.

Ok, setelah download source Connector/C++, kamu perlu men-download CMake di http://cmake.org/cmake/resources/software.html.  Pastikan kamu men-download installer cmake-2.8.8-win32-x86.exe. “Apa lagi itu?” tanyamu.  Mungkin kamu akan menemukan banyak hal baru yang tidak ada di kuliah C++, tapi jika kamu suka petualangan, kamu akan menemukan banyak yang menarik.  CMake adalah sebuah tools untuk kompilasi proyek dan aktifitas serupa, mirip seperti make di Linux atau nmake.exe di Visual Studio.  Perbedaannya adalah CMake tersedia di banyak platform.  “Dengan CMake, source code jadi multi platform seperti di Java?” tanyamu.  Tidak, bukan!  Bukan source code-nya, tapi tool untuk kompilasi-nya.  Dengan CMake, kamu ga perlu ganti ke Linux hanya gara2 proyek  memakai make.

Pastikan pada saat kamu meng-install CMake, kamu memilih “Add CMake to the system PATH” (terserah, ke all users atau current user).  Hal ini akan mempermudah kamu dalam memberikan perintah di command prompt nanti tanpa harus memusingkan direktori instalasi CMake.  Walaupun ada versi GUI dengan nama cmake-gui, kamu akan memakai versi command prompt, bukan agar terlihat keren, tetapi untuk mempermudah copy paste dari artikel ini.

Sekarang buka kembali folder mysql-connector-c++-1.1.0 yang telah di-extract.  Disini kamu akan menjumpai sebuah file dengan nama CMakeLists.txt.  Yup, sesuai dengan tebakanmu, ini adalah file yang akan dikerjakan oleh CMake.

Mari jalankan CMake.  Mulai dengan buka sebuah command prompt di Windows 7.  Kemudian pindah ke direktori mysql-connector-c++-1.1.0.  Sebagai contoh, jika direktori tersebut berada di Desktop, maka saya mengetikkan perintah:

CD C:\Users\Jocki\Desktop\mysql-connector-c++-1.1.0

Berikutnya, kamu perlu memberitahu dimana kamu meng-install MySQL. Kamu pasti tahu bukan? Jika kamu memakai XAMPP, kemungkinan besar MySQL ada di C:\xampp\mysql.  Berikan perintah berikut ini:

SET MYSQL_DIR=C:\xampp\mysql

Langkah berikutnya, karena Connector/C++ memakai Boost, maka kamu perlu men-download Boost di http://www.boost.org/users/download/.   Apa itu Boost?  Boost adalah kumpulan library untuk C++ yang sangat lengkap mulai dari fitur foreach hingga dukungan akses jaringan yang portable.  Kamu bisa melihat fitur lengkapnya di http://www.boost.org/doc/libs/1_50_0/.  Jika kamu memakai Boost di ujian mata kuliah C++, mungkin dosenmu akan terkagum-kagum dan memberimu nilai A++ (oops.. A++ adalah A=A+1, nilainya B donk?!)

Setelah download Boost, extract source-nya ke sebuah folder.  Jika folder tersebut adalah C:\Users\Jocki\Desktop\boost_1_50_0, maka berikan perintah seperti berikut ini:

SET BOOST_ROOT=C:\Users\Jocki\Desktop\boost_1_50_0

Sekarang, kamu siap akan melakukan kompilasi kode program yang ada, dengan memberikan perintah:

cmake -G "Visual Studio 10" -DCMAKE_INSTALL_PREFIX=C:\Users\Jocki\Desktop\ConnectorCPP

Pada perintah di atas, kamu akan menggunakan Visual Studio 2010.  Kamu juga memberitahu bahwa nantinya, hasil output yang paling final akan ada di folder C:\Users\Jocki\Desktop\ConnectorCPP.  Kamu mungkin perlu menyesuaikan lokasi ini sesuai selera.

Setelah CMake selesai bekerja, akan ada tulisan Configuring done, Generating done, serta Build files have been written to.

Bila kamu melihat lokasi extract source Connector/C++, kamu akan menemukan file baru, seperti MYSQLCPPCONN.sln, ALL_BUILD.vcxproj, INSTALL.vcxproj, PACKAGE.vcxproj, dan ZERO_CHECK.vcxproj.  Sekarang kamu telah memiliki file-file yang dapat langsung dibuka di Visual Studio 2010.

Double klik file MYSQLCPPCONN.sln.  Visual Studio 2010 akan diluncurkan.  Ini adalah sebuah Solution yang terdiri atas 35 projects!!  Sebelum kamu mulai melakukan sesuatu, ganti Solutions Configuration dari Debug menjadi Release, seperti yang terlihat pada gambar berikut ini:

Solutions Configuration

Solutions Configuration

Klik kanan pada nama proyek ALL_BUILD, kemudian pilih menu BUILD.  Visual C++ akan melakukan proses compile & linking setiap source code yang ada.  Bila kamu terbiasa mem-program proyek open source C++, maka kamu tidak akan terkejut dengan prosesnya yang memakan waktu.  Tapi bila ini pertama kalinya, kamu masih sempat ke dapur untuk membuat kopi.  “Gila.. Kode program C++ paling panjang yang pernah gw temui selama kuliah sekali klik masih bisa langsung muncul hasilnya.. Pertama kalinya gw mesti nunggu lama untuk jalanin program,” mungkin kamu berpikir demikian, tapi hidup memang rumit dan harus berlanjut!  Ngomong-ngomong ini baru build connector-nya, kamu masih belum build MySQL dari kode program (yup, MySQL dibuat pakai C++, tapi kamu biasanya download installer-nya yang sudah ‘jadi’).

Setelah proses build selesai,  klik kanan pada proyek bernama INSTALL.   Lalu pilih Build.  Proses kali ini tidak lama karena pada dasarnya hanya men-copy file hasil linking ke folder yang telah ditentukan.

Bila kamu melakukannya dengan benar, akan terbentuk sebuah folder ConnectorCPP di Desktop (btw, lokasi ini kamu yang tentukan!). Di dalamnya ada folder include dan lib.  Di dalam folder lib terdapat file mysqlcppconn.dll, mysqlcppconn.lib, dan mysqlcppconn-static.lib.  Ini adalah library yang kamu butuhkan.  Dan karena kamu membuatnya dari nol, maka library ini pasti kompatibel dengan sistem-mu.

Perihal Solid Snake
I'm nothing...

9 Responses to COM DLL Akses MySQL – Bagian 1: Membuat Library

  1. Albert Antonius mengatakan:

    GILA!!!

    benar” mantap ternyata skripsi yang aku buat ini, benar” gila.. wkwkwkwk

    hanya demi melakukan connect C++ ke MySQL saja harus mendownload 3 file yg berbeda..
    ckckckck..

    Ini baru connectornya.. blm lagi COM dan DLL CRUDnya.. benar” ini ilmu yang sangat gila dan sangat baru sekali!!

    #SepertinyaAkuSalahMengambilJalanSkripsi T_T

  2. Ping-balik: COM DLL Akses MySQL – Bagian 2: Membuat Project di Visual Studio 2010 « The Solid Snake

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

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

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

  6. Paak, tolong paak, ane download versi terbarunya kok ga ada file CMakeList.txt nya? CMakenya jadi ga mau jalan =,=

  7. tvianty mengatakan:

    VS2010 sudah saya ubah ke mode Release.
    Saat build project BUILD_ALL ada beberapa warning, yang sepertinya bisa diabaikan
    dan saat build project INSTALL saya mendapat error :
    Error 1 error MSB3073: The command “setlocal
    “C:\Program Files\CMake 2.8\bin\cmake.exe” -DBUILD_TYPE=Release -P cmake_install.cmake
    if %errorlevel% neq 0 goto :cmEnd
    :cmEnd
    endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
    :cmErrorLevel
    exit /b %1
    :cmDone
    if %errorlevel% neq 0 goto :VCEnd
    :VCEnd” exited with code 1. C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppCommon.targets 113 6 INSTALL

    Apakakah ada tahapan yg saya lewatkan? Bisakah anda membantu saya menangani error ini?

    Terima kasih sblm-nya.

    • tvianty mengatakan:

      akhirnya saya copy-kan config.h yg ada di hasil build menggunakan CMake yg ada di folder cppconn ke folder cppconn di hasil extract awal.
      Akhirnya build project INSTALL berhasil dilakukan.
      Apa cara ini boleh dilakukan? atau ada saran lainnya?

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: