c,c++ kodu .net üzerine reference yapmak |
Yanıt Yaz |
Yazar | |
aziz.alkurt
Admin Group Kayıt Tarihi: 27.Ocak.2012 Bulundugu Yer: FETHİYE Online: Sitede Değil Gönderilenler: 26 |
Alıntı Cevapla
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 |
|
Yanıt Yaz |
Forum Atla | Forum İzinleri Kapalı Foruma Yeni Konu Gönderme Kapalı Forumdaki Konulara Cevap Yazma Kapalı Forumda Cevapları Silme Kapalı Forumdaki Cevapları Düzenleme Kapalı Forumda Anket Açma Kapalı Forumda Anketlerde Oy Kullanma |