Çarşamba, Kasım 05, 2008

Kütüphane Kullanımı

Kütüphane kullanımı konusunda epey bir sıkıntı çekildiğini bana ulaşan mesajlardan anlıyorum. Büyük bir şevkle yeni bir kütüphaneyi kullanmaya niyetleniyorsunuz. Örnek programlarından biri derlemeye kalkıyorsunuz. Anlamadığınız hatalar veriyor. Bütün istek ve arzunuz kayboluyor. Belkide çoğu kimse vazgeçiyor. Panik yapmayın herşeyi anlatacağız. Anlatacaklarımız CodeBlocks ve Mingw32 gibi görünsede diğer IDE lerde de aynı ayarların yapıldığı yerler var. İşin mantığını anlamanız yeterli.

Temel olarak bilmemiz gereken şudur. Herhangi bir kütüphaneyi kullanabilmek için iki şeye ihtiyacımız var.
  1. Fonksiyon ve Sınıf tanımlamalarının bulunduğu başlık dosyaları ( uzantıları *.h yada *.hpp olur)
  2. Derlenmiş kütüphane dosyaları ( Uzantıları *.lib GCC için *. a ) mesela libfltk.a yada fltk.lib gibi
Kütüphaneyi kullanabilmek için bu ikisine de ulaşılabilir olması lazım. Eğer başlık dosyasına ulaşamazsak derleme işlemi olmaz. Kütüphaneler ise derleme işleminden sonra, bağlamada - Link - sırasında gerekli oluyor. Yani hatamızın hangi aşamada oluştuğuna bakarak neyi düzeltmemiz gerektiğini anlayabiliriz

Mesela Projemizde mylib diye bir kütüphane kullanmak istiyoruz ve kütüphanemizi
"c:\mylib" e kurduk
Başlık dosyalarımız "c:\mylib\include" de - mylib.h -
Derlenmiş kütüphane dosyalarımız "c:\mylib\lib" de olsun - mylib.lib -

CodeBlocks' çalıştırın
Öncelikle projemizi oluşturuyoruz.
Menuden Project -> Build Options seçin
Search Directories kısmının
Derleyici - Compiler - kısmına Başlık dosyamızın bulunacağı dizini yazıyoruz


Bağlayıcı - Linker - kısmına kütüphane dosyalarımızın bulunacağı dizini yazıyoruz


Yine aynı pencereden Linker settings kısmında link libraries kısmına kullanacağımız kütüphaneyi yazıyoruz.


Hepsi bu kadar. Eğer Kütüphanemizin başka bağımlılığı yoksa bu ayarlarla kullanabilirsiniz. Başka bir kütüphaneye bağlıysa üstte bahsettiğimiz ayarları o kütüphane için de yapmanız gerekir.

Kütüphane kullanımı konusundaki başka bir sıkıntı da genelde kütüphanelerin kaynak kod olarak dağıtılıyor olması. Yani derlemenizin gerekmesi.

Bu problemin en kolay yolu Derlenmişini İnternette aratmanızdır. Özellikle derlenmesi zor kütüphaneler için hazır derlenmiş paketler var. Bunda dikkat edilecek husus kendi derleyicinize göre kütüphane bulmanız. Her ne kadar Mingw32 *.a uzantılılar gibir *.lib kütüphanelerini kullanabilsede bazen problem çıkabiliyor. Karşılaşırsanız. şaşırmayın.

Bir başka metod DevPak kullanmak. DevPak zaten DevCpp için hazırlanmış derlenmiş kütüphanelerdir. 7z ile açıp içinden gereken dosyaları alıp kullanabilirsiniz.

Başka bir çözüm yoluda MSYS kurmaktan geçiyor. MSYS ile size komutsatırından derleme imkanı oluşuyor Linux vari
./configure
make
komutlarıyla şansınızı deneyin pek çok kütüphaneyi bu şekilde derledim. Bu metodun bir avantajıda derleme opsiyonlarını kullanabilmeniz.

Yine diğer bir metod; Çoğu Kütüphanenin MSVC için proje - Workspace yada solution - dosyaları oluyor. CodeBlocks'un da bu dosyaları import etme seçeneği var.
File->import project den ilgili seçeneği seçip Kütüphanenin proje dosyasını C::B da derleyebilirsiniz.

Son olarak da kendi kütüphane projemizi kendimiz hazırlamak da bir çözümdür bakınız bir örnek çalışma Fann

1 yorum:

enerjinet dedi ki...

Teşekkürler.Blogunuz C++ programcıları için çok faydalı :)Kütüphane kullanımını öğrenerek Audiere ile basit bir konsol uygulaması da yazabildim.