Interop
- Kotlin kursu
- Uzman
- Ders 20/47
- 5 dk
C interop ile C kütüphanelerini öğrenirsin.
C interop nedir?
C interop, Kotlin/Native kodunun C kütüphanelerini çağırabilmesidir. Bu, mevcut C kod tabanını yeniden kullanmanın yoludur.
Gradle'da cinterops bloğu ile bir C kütüphanesi tanımlanır; .def dosyası başlık dosyalarını ve derleme seçeneklerini belirtir. Kotlin, her C fonksiyonu için bir bağlayıcı (binding) üretir; sen bu bağlayıcıları sıradan Kotlin fonksiyonları gibi çağırırsın. Örn. SQLite, libgit2 ve OpenSSL bu yolla kullanılır. Bu derste basit bir CLib modeliyle interop kavramını göstereceğiz.
C türlerinin eşlemesi
C interop, C türlerini Kotlin türlerine otomatik eşler. Bu eşleme bellidir; elle ayarlamaya gerek yoktur.
Örnek: C int'i Kotlin Int'e, char*'ı CPointer<ByteVar>'a, struct'ı bir Kotlin sınıfına eşler. Bellek yönetimi Kotlin tarafında olur; nativeHeap.alloc<T>() ile ayırıp nativeHeap.free(ptr) ile bırakırsın. Bu, C'deki malloc/free'in Kotlin karşılığıdır. Yanlış kullanım bellek sızıntısı yapar.
Uygulama CLib.cstrlen yaz
object CLib tanımla. İçinde fun cstrlen(s: String): Int metodu s.length döndürsün. main içinde println(CLib.cstrlen("merhaba")) yaz.
Başlangıç kodu
// CLib nesnesini ekle
fun main() {
// CLib.cstrlen("merhaba") sonucunu yazdır
}Örnek çözüm
object CLib {
fun cstrlen(s: String): Int = s.length
}
fun main() {
println(CLib.cstrlen("merhaba"))
}Beklenen çıktı
7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 cstrlen çağrısını tamamla
fun main() {
val n = CLib.____("merhaba")
println(n)
}
fun main() {
val n = CLib.cstrlen("merhaba")
println(n)
}
Açıklama: cstrlen, C strlen fonksiyonunun Kotlin bağlayıcısıdır.
2 C-Kotlin tür eşleştir
| Kavram | Anlamı |
|---|---|
cinterops |
C kütüphane bloğu |
.def dosyası |
Başlık ve seçenekler |
nativeHeap |
Bellek yöneticisi |
CPointer |
İşaretçi türü |
3 C interop hangi dosyayla tanımlanır?
- .json dosyasıyla
- .def dosyasıyla Doğru cevap
- .xml dosyasıyla
- .properties dosyasıyla
Açıklama: .def dosyası başlık ve derleme seçeneklerini belirtir.