CodeBlanks Logo Icon CodeBlanks

Interop

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

Main.kt
// CLib nesnesini ekle

fun main() {
    // CLib.cstrlen("merhaba") sonucunu yazdır
}

Örnek çözüm

Main.kt
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

Soru
fun main() {
    val n = CLib.____("merhaba")
    println(n)
}
Cevap
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.

Uzman bölümündeki tüm dersler