Datakent Ana Sayfa
Anasayfa Anasayfa > Diğer bölümler > C# & ASP.NET
  Aktif Konular Aktif Konular RSS: c,c++ kodu .net üzerine reference yapmak
  Yardım Yardım  Hızlı Ara   Kayıt Ol Kayıt Ol  Giriş Giriş

c,c++ kodu .net üzerine reference yapmak

 Yanıt Yaz Yanıt Yaz
Yazar
Mesaj
aziz.alkurt Açılır Menü Göster
Admin Group
Admin Group
Simge

Kayıt Tarihi: 27.Ocak.2012
Bulundugu Yer: FETHİYE
Online: Sitede Değil
Gönderilenler: 26
  Alıntı aziz.alkurt Alıntı  Yanıt YazCevapla Mesajın Direkt Linki Konu: c,c++ kodu .net üzerine reference yapmak
    Gönderim Zamanı: 17.Haziran.2012 Saat 17:23
Elimizde kod yüklü ağır bir c veya c++ kodu var ve bunu .net üzerinde kullanmak istiyoruz.
       DLL export-import ile basit şekilde geçiştirilebilir. Fakat program multithread çalışabilir mi? büyük oranında çakar. Küçük  ihtimal ise dll yazan kişinin bunun bilincide olup static varriableler kullanmıyarak, hatta prosedur için pointer al, aldığın poiner değerini değiştir mantığı kullanarak, birde dispose problemi yaşamamak için kullanılan varriablelerin .net platformu içerisinde yaratılması.  Neden? Çünkü c,c++ kodlamalarında otomatik garbage collector yani kullanılmayan nesnelerin ramdan silinmesini ve bu bağlantıları heranı takipte olan bir servise sahip değildir. Aksi taktirde karşılaşacağınız hata, hataların en kötüsü olan : "AccessViolationException". Bu hata için bilgilendireyim try-catch yemez. Çünkü hatayı OS verir, çalışan sistem OS üzerine zarar verileceği düşünülerek sonlandırılır. Kullandığınız OS bunu da yapmaya yeteneksiz ise mavi ekranla karşılaşabilirsiniz.
      Bildiğimiz gibi Microsoft firması uzun yıllardır c ve c++ üzerine çaba harcıyor. Hatta çoğu kütüphanelerinin kendine ait olan bir compiler sahibi. Bunun dışında kötü tarafı bazı kütühaneleri tanımaması. .Net platformu ortada yokken microsoftun neden bu compiler üzerinde çalıştığı merak konusuydu. Üstelik piyasada açık kaynaklı daha iyi derleyiciler varken. .net in sonraki sürümlerinde gelen .net C++ yani CLR (Common Language Runtime) destekli c++ derleyicisi, .net platformunun ne kadar güçlü olduğunu ilan etti.
     Visual Studio içerisinde C++ projesi yarattığın zaman "Common Properties" bölümünde "Common Runtime Language Support" bölümünü açarsanız proje artık .net C++ olmuş oluyor ve hem .net kütüphanelerini projeye dahil edebilme hem normal c++ projelerini veya ".lib" uzantılı api lerini hende bu projeyi dll haline getirdikten sonra .net projelerinde referans olarak ekleme şansınız oluyor. Elinizdeki kod yükü ağır c++ projelerini de isterseniz bu oluşturduğunuz .net c++ projesine ister proje halinde, isterseniz "C/C++"->"General" -> "Resolve #using Reference" listesine ekliyerek (derlenmiş ".lib" uzantılarını) .net c++ projesi ile bu iki proje (kod yükü ağır c++ projesi ve C#) arasında bir köprü yazmanıza imkan sağlanıyor.
Fakat bununda tabi şartları var. Öncelikle C# projesine bu yarattığımız .net c++ ile yazılış dll eklemek isersek projeyi "Client Profile" modundan çıkarmamız gerekiyor. İkincisi c++ kodu hangi platform için yazlımışsa projeyi ona almak gerekiyor.(32 bit-> x86, 64 bit -> x64)  c++ projesini ".Net 4" platformunda çalıştırmak istiyorsak .net c++ kodunu "v100" yani Visual Studio 2010 üzeride derlememiz gerekiyor. En son olarak da yazılan yazılımın başka makinada çalışması için "Visual C++ 2005-2008-2010" (hangi patformda derlenmişse ve x86-x64 mü olduğu) kurulması gerekiyor.



Düzenleyen aziz.alkurt - 18.Haziran.2012 Saat 10:21
Yukarı Dön
 Yanıt Yaz Yanıt Yaz

Forum Atla Forum İzinleri Açılır Menü Göster



Bu Sayfa 0,183 Saniyede Yüklendi. [power by : WebWiz]