Anasayfa » Genel, Programlar

Visual Studio da Header ve Library Dosyalarını Include Etme

15 Şubat 2012 3.824 kez okundu Yorum yok
1 Star2 Stars3 Stars4 Stars5 Stars (Henüz hiç oy kullanılmadı. İlk oyu siz verin.)
Loading ... Loading ...

Visual Studio kullanarak büyük kapsamlı projelerle uğraşıyorsanız başka kütüphanelere ihtiyacınız olacaktır. İşte bu kütüphaneleri projenize dahil etmeniz gerekiyor. Bu işlemi yapmanın bi kaç yolu vardır.

İlk önce bahsedeceğim konu newbieler için bir projede external bir fonksiyonu kullanabilmek için o fonksiyonu içeren header dosyasını yani .h uzantılı dosyasını include etmemiz gerekiyor. En basidinden  #include<stdlib.h> buna güzel bir örnektir. Böyle kullanmak kolaydır, basit olur. Aksi durumlarda fonksiyon library file içinde olabilir. Bu dosyalar .lib uzantılı paketlenmiş kütüphanelerdir. Bunları projeye dahil etmek için izleyeceğimiz yollar şöyledir (anlatım Visual Studio 2008 ve SP1 içindir):

– Projeye sağ tıklanarak  “Properties” e gelinir.

– Linker -> Input kısmına gelinir. Ordan “Additional Dependencies”e gelinir ve karşısına aralara noktalı virgül koyarak istenen lib dosyalarının isimleri yazılır. Dikkat: Path değil ismleri yazılır sadece.

Mesela şöyle bir görüntü oluşabilir:

Projeyi build ettiğinizde yüksek ihtimalle dosyaismi.lib dosyasını bulamadım diye uyarı verir.Hata ise şöyledir

Unresolved external symbol-

Nedeni ise kullanmak istediğimiz .lib dosyasının yolunu belirtmedik.Anlatacağımız mesele burada devreye giriyor.

Header ve lib dosyalarının pathlerini vermenin yöntemleri şu şekildedir:

1) Header:Projeye sağ tık Properties, C/C++ -> General -> Additional Include Directories. Buraya kod içinde #include<dosyaismi.h> diye include ettiğimiz header dosyasının içerildiği pathi giriyoruz. Böylece external bir kütüphaneyi dilediğimiz gibi kullanabiliyoruz.

Library file: Bunun için de Projeye sağ tık Properties, Linker -> General -> Additional Library Directories’in karşısına yukarıdaki gibi kullanmak istediğimiz lib uzantılı dosyanın içerildiği pathi yazıyoruz. OK diyip çıkıyoruz. Rebuild solution tada hata kaybolacak. Başka bişi yoksa çalışacak muhtemelen.

Bu ilk çözüm takdir edersiniz ki projeye özel bir çözüm. Daha genel geçer bir çözüm aşağıda:

2) External header ve lib dosyalarını sık sık değişik projelerde kullanılacaksa bu yöntem daha uygun sanki. Visual Studio ana penceresinde Tools -> Options -> Projects and solutions -> VC++ Directories’e gelinir. Sağ kısımın sağ üst köşesinde Show directories for yazar onun altındaki dropdown listten “Include files” veya “Library files”a gelerek istenen header veya lib dosyalarının içerildiği pathler yazılır. Böylece hiç projenin ayarlarını değiştirmeden buradan dahil edilebilir.

3) Bu biraz hantalca olacak ama küçük ve az dosyalı bi kütüphaneyle çalışılıyorsa yapılabilir:kullandığınız header dosyalarını falan doğrudan projenin source klasörü içine atmak

Peki dosyaları arama sırası nedir?

1. Build aşamasında ilk olarak ilgili source klasörüne bakılır

2. Proje Properties’indeki Additional Include Directories’de bakılır

3. Tools-> Options’tan ayarlanan VC++ Directories’e bakılır

Artıları eksileri nelerdir?

Bi kere 1. yöntemle hazırlanmış projeleri paylaşması paylaşılan insan için daha kolaydır. Çünkü bi de projenin ayarlarını yapmakla uğraşmaz doğrudan build edebilir tabi aynı pathlerde aynı kütüphaneler varsa.(ortam değişkenleri de aslında bunun için var bence). Taşınabilirlik artar. 2. yöntemde taşınabilirlik yok adam projeyi alınca bi de ayarlarını yapar include edilen liblerin yollarını bulup belirtir. Ama 2. yöntemde de sürekli yeni proje açtıkça aynı ayarlar yapılmayıp rahat edilir. 3. yöntemde de projenin boyutu falan büyüyor.

Umarım işinize yarar

<<< Önceki:

Sonraki: >>>


Facebookta Paylaş

Yorum Bırakın!

Yorum yaz, yada kendi sitende trackback (Geri besleme) olarak ekle. Ayrıca RSS ile bu konuya üye olabilirsin. .

Nazik olun. Temiz tutun. Konu dışına çıkmayın. Spam yaratmayın.

Bu tagları kullanabilirsiniz:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Bloğumuz gavatarı desteklemektedir. Kendi gavatarınızı edinmek için lütfen Gravatar a üye olun.