ctypes.CDLL
- Python kursu
- Uzman
- Ders 19/47
- 5 dk
ctypes.CDLL ile yerel kütüphane yüklemeyi öğrenirsin.
ctypes.CDLL nedir?
ctypes modülü Python'dan yerel C kütüphanelerini çağırmayı sağlar. CDLL sınıfı paylaşımlı bir kütüphaneyi yükler ve içindeki fonksiyonları kullanıma açar.
CDLL(None) varsayılan C kütüphanesini (Linux'ta libc) yükler. Yüklenen nesne üzerinden libc.abs(-7) gibi fonksiyonları çağırabilirsin. Dönüş türü varsayılan c_int'tir. Bu, Python ile C arasında köprü kurmanın en doğrudan yoludur ve sistem programlamada yaygındır.
Fonksiyon çağrısı
Bir CDLL nesnesi üzerinden fonksiyonlara nokta ile erişirsin: libc.abs(-7). Python argümanları otomatik olarak C türlerine çevirir.
Varsayılan dönüş türü c_int'tir. Eğer fonksiyon başka bir tür döndürüyorsa (örneğin size_t), restype ile belirtmen gerekir. Aksi halde dönüş değeri yanlış kırpılabilir. Fonksiyon çağrısı, C'deki gibi senkron ve hızlıdır; ama tür uyumsuzluğu çöküşe yol açabilir.
Uygulama CDLL ile abs çağır
import ctypes ile modülü içe aktar. ctypes.CDLL(None) ile varsayılan C kütüphanesini yükle. libc.abs(-7) çağrısının sonucunu bir değişkene ata ve yazdır.
Başlangıç kodu
# libc yükle
# abs fonksiyonunu çağır
# sonucu yazdırÖrnek çözüm
import ctypes
libc = ctypes.CDLL(None)
result = libc.abs(-7)
print(result)Beklenen çıktı
7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 CDLL kavramlarını eşleştir
| Kavram | Anlamı |
|---|---|
CDLL |
Kütüphane yükler |
None |
Varsayılan libc |
.abs(-7) |
Fonksiyon çağrısı |
c_int |
Varsayılan dönüş |
2 CDLL(None) ne yükler?
import ctypes
libc = ctypes.CDLL(None)- Varsayılan C kütüphanesini Doğru cevap
- Python standart modülünü
- Bir hata fırlatır
- Boş bir nesne
Açıklama: CDLL(None) sürecin varsayılan C kütüphanesini yükler.
3 CDLL çağrısını tamamla
libc = ctypes.____(None)
libc = ctypes.CDLL(None)
Açıklama: CDLL(None) varsayılan C kütüphanesini yükler.