C++ DLL DOSYALARI

Visual Studio programı ile C++ dll dosyaları oluşturma ve bu dosyaları çağırma. Örnek bir kütüphane oluşturma ve kullanma.


Merhabalar;

Bu bölümde Visual Studio programı ile kütüphane oluşturmayı anlatacağım. Sonraki bir yazıda ise DEV-C++ ile bu işlerin nasıl yapıldığını anlatmaya çalışacağım.

Kütüphane konusunu biliyorsunuzdur zaten anlatmama gerek yok. 

Önce Visual Studio yu açıyoruz, burada şunu söyleyeyim. Biz boş bir uygulama oluşturacağız ve bu uygulamalarda her şeyi kendimiz yapacağız. Zaten saf C++ bu şekildedir. Wizard falan kullanılan uygulamalar orijinal kod olmayıp. Sonradan derleyici üzerine yazılım paketçikleri yazılmak suretiyle oluşturulmuş namespacelerdir. Örneğin C# Form, form araçları, array list vb. gibi kontroller sıfırdan geliştirilmiştir. Kullanıcının bunları yeniden yazmaz. Daha önce yazılmış class'lara değer vererek sonuç elde ederler.

Şimdi projeyi oluşturmaya başlayalım. Önce dll dosyasını oluşturuyoruz.

Visual Studio da File>>New>>Project adımları ile New Project penceresini açın.

Sol tarafta Other Languages sekmesi altında Visal C++ Sekmesini tıklayın. Bu sekmenin altındaki sekmeleri tıklamayın, sadece Ana sekmeyi (Visual C++) tıklarsanız yanda seçenekler görülecektir. Bunlardan” Empty Project “ (Boş proje anlamına geliyor) seçin. Bu projeyi biz dolduracağız.

Empty Project sekmesini seçerek alt kısımdaki kutucuklardan bir isim verin. Ben “ArtisticLib” adını verdim.

dlldosyaolstr


Projeyi oluşturunca, sol tarafta solution Explorer’da sadece 4 tane boş klasör görürsünüz. Şimdi önce bir header dosyası ekleyeceğiz.


Solution Explorer’da uygulama adına sağ tıklayarak veya Project>>Add New Item adımları ile Add New Item mini ekranını açın.

Burada Visual C++ ana sekmesi seçili haldeyken sağda iki dosya tipi görülür. C++ Source File ve C++ Header File. Biz Header File dosyasını seçeceğiz ve bu dosyaya bir isim vereceğiz. Benim verdiğim isim “SanatsalMatematik”. Add buttonunu tıklayarak dosyayı projeyi ekleyin. Boş bir beyaz sayfa gelecektir.


Şimdi bu dosyaya bildirimlerimizi yazalım.

SanatsalMatematik.h dosyası

namespace SanatsalMatematik
{
 class Kure
 {
 public:
  static _declspec(dllexport) double Hacim(double x, double y);
  static _declspec(dllexport) double Alan(double x, double y);
 };
}

Bu dosyada Header dosyasının adı ile aynı ismi taşıyan bir namespace oluşturduk ve Kure isimli bir sınıf tanımladık.

Küre sınıfına da 2 fonksiyon tanımladık.

Şimdi yine Solution Explorer’da uygulama adına sağ tıklayarak Add New Item mini penceresini açın ve bu kez C++ Source File (cpp) dosyasını ekleyin. Bu dosyaya da Header dosyası ile aynı ismi verin.

Bu dosyaya işlemleri gerçekleştirecek fonksiyonları yazacağız.

SanatsalMatematik.cpp


#include "SanatsalMatematik.h"
#include <stdexcept>
using namespace std;
namespace SanatsalMatematik
{
 double Kure::Hacim(double r)
 {
  double khacim = 0;
  double us = pow(r, 3);
  khacim = us*3.14 * 4 / 3;
  return khacim;
 }
 double Kure::Alan(double r)
 {
  double k_alan = 0;
  double us2 = pow(r, 2);
  k_alan = us2 * 4 * 3.14;
  return k_alan;
 }
}


Sıra uygulamayı derlemeye geldi. Önce bir takım ayarlama yapmak lazım. Project sekmesinde "ArtisticLib Properties" adında, (uygulamanızınadı Properties şeklinde görülür) bir seçenek olmalı. Bunu tıklayarak ArtisticLib Property Page (Uygulama özellikleri sayfası) mini penceresini açın. Burada Configuration Settings (Konfigürasyon Ayarları) altında General sekmesini tıklatın. Yan tarafta bir çok ayar seçeneği göreceksiniz.


Configuration Type kısmı "Application(exe)" olarak görülür. Bu kısmı değiştirerek Dynamic Library(dll) yapın.

Target Extensions kısmı exe olarak gürünür. Bu kısımda exe yi silerek .dll yapın.

Uygulamanızı derleyin. "Unable To Start Program" ile başlayan bir hata verirse, her şey yolunda demektir. Bu bir kütüphanedir ve ancak bir programda çağrılarak çalıştırılabilir demek istemektedir.

Şimdi bu kütüphaneyi bir uygulamada çağırmalı, istediğimiz kadar yarıçap girerek kürelerimizin alan ve hacimlerini hesaplayabilmeliyiz.

Yeniden Visual Studio da yeni bir uygulama yaratın. Dll dosyasını yarattığınız gibi yine boş bir proje oluşturun Bu uygulamaya ben KureselHesap adını verdim.

Tekrar solution Explorer’da uygulama adını sağ tıklayın bu kez header dosyası eklemeyeceğiz. Sadece C++ source File(cpp) dosyasını ekleyeceğiz. Varsayılan adı Source.cpp olacaktır. Bu ismi değiştirmenize de gerek yok. Bu kısımda source.cpp olarak kalabilir. Daha da estetik olur.

Şimdi Kütüphanemizi uygulamaya çağıralım.

1. Adımda Tekrar Projects sekmesinden Uygulama adı Properties şeklindeki seçeneği tıklayarak veya Solution Exploer’da uygulama adına sağ tıklayıp Properties seçerek “Property Page” sayfasını açın. 

C/C++ sekmesi altındaki General seçeneğini tıklayın. Sağ tarafta ayarlar görülecektir. Bunlardan "Additional Include Directories" kısmına tıklayarak header dosyanızın olduğu dizini yazın.

Bu dizin Visual studio da genellikle şu şekilde oluşturulur. Uygulama adı ArtisticLib olsun. Önce ArtisticLib adında bir klasör oluşturur. Bu klasörün içinde bazı dosyalar, Debug klasörü ve yine ArtisticLib adıyla bir klasör bulunur. Header ve source sayfaları 2. Klasörün içinde olduğundan Additional Include Directories kısmına bu 2. Klasörün yolunu veriniz.

calldll


2. Adımda aynı pencerede bu kez Linker sekmesi altında General satırını tıklayın. Sağ tarafta Environment kısmına dll dosyanızın içinde bulunduğu Debug klasörünün yolunu yazınız.


3. Adımda Linker sekmesinin altında bulunan Input seçeneğini tıklayın. Sağda açılan ekranda "Additional Dependencies" kısmını göreceksiniz. Bu kısma lib dosyanızın tam yolunu yazınız. .lib uzantılı dosya Debug klasöründe .dll uzantılı dosya ile birlikte yer alır. Uygulamamızda dosyanın adı ArtisticLib.lib dir. Bu dosyanın yolunu yazacaksınız.

2. Adımda Debug klasörünün adını yazıyor, sonrasını yazmıyorduk. Bu adımda debug ifadesinden sonra “ArtisticLib.lib” ifadesini de ekliyoruz.


4.Adımda Kütüphane yani .dll uzantılı dosyanızı, çağırdığınız uygulamanızın Debug klasörüne kopyalayın. Benim uygulamada adı ArtisticLib.dll idi bu dosyayı KureselHesap adlı uygulamaya çağırdığım için bu uygulamanın Debug klasörüne kopyaladım.


Aşağıdaki kodları yazarak kütüphaneyi test edebiliriz.


#include <iostream>
#include "SanatsalMatematik.h"
using namespace std;
int main()
{
 double yaricap;
 cout << "Kurenin Yaricapini Griniz :";
 cin >> yaricap;
 double kurehacim = SanatsalMatematik::Kure::Hacim(yaricap);
 double kurealan = SanatsalMatematik::Kure::Alan(yaricap);
 cout << "Kurenin Hacmi = " << kurehacim << endl;
 cout << "*****************************";
 cout << endl;
 cout << "Kurenin Alani = " << kurealan << endl;
 cin.get();
 cin.get();
 return 0;
}


Bu makale ile bir kürenin yarıçap değerini değişken olarak alıp, bu kürenin alan ve hacmini hesaplayan bir dll dosyası oluşturduk ve bunu bir uygulamada çağırarak sadece yarıçap değerini girerek istediğimiz hesapları elde ettik. OOP yazılımcılığı bu mantık üzerine kuruludur.


Kolay Gelsin


DEV C++ İLE DLL DOSYALARI OLUŞTURMA


SANATSAL BİLGİ

19/12/2016 

  • YORUM YAZ
  • ADI SOYADI(veya nick)
  • YORUM

YORUMLAR
tes
paylaşım için teşekkürler.

COPYRIGHT© HER HAKKI SAKLIDIR
Sitede Yer Alan Bilgi Belge Ve Materyallerin İzinsiz olarak Kopyalanması ve Alıntılanması Yasaktır

SANATSAL BILGI