Forum: Diğer Konular RSS
Statik Kütüphanenin Her Dilde Kullanılabilmesi
İbrahim #1
Üye Eki 2015 tarihinden beri · 126 mesaj
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Statik Kütüphanenin Her Dilde Kullanılabilmesi
Selamün Aleyküm;
Elimde statik bağlanmış kütüphaneler var (libKutuphane.a şeklinde). Bu kütüphaneler C++ ile kodlanmış ve başlık dosyaları sayesinde bu kütüphaneleri kullanabiliyoruz (.h dosyaları). Yalnız bu statik kütüphaneleri ben Delphi, Python ve Java gibi dillerde kullanabilmem nasıl bir yol izleyebilirim?
Teşekkürler.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4391 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
O dillerde nasıl kullanılabildiğini bilmiyorum ama programları linker (bağlayıcı) ile oluşturulan C, C++, D, ve eminim başka diller genelde birbirlerinin .o ve .a dosyalarını kullanabilirler. Bunun nedeni, .o ve .a dosyaları artık dilden bağımsızdır. Bağlayıcı hepsini bir araya getirir ve programı oluşturur.

Tabii bu iş bu kadar kolay değil: D'de .h olmadığı için D ilintisi yazmak gerekir, D çalışma ortamının (D runtime) özel bir işlev çağrılarak başlatılması şarttır, vs. Program D derleyicisi (ve otomatik olarak çağrılan bağlayıcı) ile oluşturulduğunda D çalışma ortamı zaten başlatılmıştır ama main() işlevin D ile değil, C veya C++ ile oluşturulduğu durumda D çalışma ortamının açıkça başlatılması gerekir.

Yani, bazı dillerde mümkün ama bazı ayrıntıları da düşünmek gerekiyor.

Ali
erdem (Moderatör) #3
Üye Tem 2009 tarihinden beri · 895 mesaj · Konum: Eskişehir
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
GNU sistemlerde derlemeli tüm diller çalıştırılabilir dosyayı oluşturmadan önce ara bir adım olarak nesne kütüklerini *.o uzantılı kütük oluşturuyorlar. Bunun bir yararı kuramsal olarak farklı diller tarafından oluşturulmuş *.o dosyalarını kullanarak çalıştırılabilir dosya oluşturmak mümkündür.

Ama pratikte bir sürü derleyici kaynak kodundaki rumuzları değiştirirler. Buna isim süsleme 'name mangling' diyoruz. İsim süsleme nedeniyle C++ ve Fortran nesne kütüklerini bağlamak mümkün değildir.

http://mihaiu.name/2002/library_development_linux/

Derlemeli olmayan diller örneğin Java için ise diyelim ki kullanmak istediğimiz kütüphane C++ ise sarıcı bir işlev yazmak gerekiyormuş.

http://stackoverflow.com/questions/24608851/using-c-librar…

Örneğin C ile oluşturulmuş SDL kütüphanesini D'de kullanmak için D ilintileri yazmak gerekiyor.

http://ddili.org/forum/thread/537
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-04-30, 11:36:40 (UTC -07:00)