CodeBlanks Logo Icon CodeBlanks

Özet - ctypes ve CFFI

CDLL, types ve Structure'ı birleştirerek bir yerel sarmalayıcı yazarsın.

Özet: ctypes ve cffi

Bu grupta Python'dan yerel C kodunu çağırmayı öğrendin. CDLL ile kütüphane yükledin, c_int ve c_char_p ile C türlerini kullandın.

argtypes ve restype ile imza tanımladın. cffi'nin C sözdizimli alternatifini gördün. Structure ile C struct'larını modelledin. Şimdi bunları birleştirip bir yerel sarmalayıcı yazacaksın: bir Point yapısı ve abs çağrısı bir arada.

Uygulama Yerel sarmalayıcı yaz

import ctypes ile modülü içe aktar. Point(ctypes.Structure) sınıfı yaz; _fields_ = [('x', ctypes.c_int), ('y', ctypes.c_int)] tanımla. libc = ctypes.CDLL(None) ile kütüphaneyi yükle. Point(-3, 4) ile örnek oluştur. libc.abs(p.x) çağrısının sonucunu yazdır.

Başlangıç kodu

main.py
# Point yapısı ve libc yükle
# abs çağır ve yazdır

Örnek çözüm

main.py
import ctypes

class Point(ctypes.Structure):
    _fields_ = [("x", ctypes.c_int), ("y", ctypes.c_int)]

libc = ctypes.CDLL(None)
p = Point(-3, 4)
print(libc.abs(p.x))

Beklenen çıktı

3

Ne öğrendin?

Bu grupta Python ile yerel C kodu arasında köprü kurmayı öğrendin. CDLL ile kütüphane yükledin, C türlerini ve imza bildirimini kullandın.

cffi'nin C sözdizimli alternatifini gördün. Structure ile C struct'larını modelledin. Özet derste yapı ve fonksiyon çağrısını birleştirdin. Bu bilgi, sistem programlama ve performans kritik uygulamalar için önemlidir.

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Tüm ctypes kavramlarını eşleştir

Kavram Anlamı
CDLL Kütüphane yükler
c_int C int türü
argtypes Argüman türleri
Structure C struct

2 Hangi araç hangi iş?

  • CDLL ile struct tanımlama
  • argtypes ile imza tanımlama Doğru cevap
  • Structure ile kütüphane yükleme
  • cffi ile web sayfası

Açıklama: CDLL kütüphane, Structure yapı yükler.

3 Son boşluk

Soru
libc = ctypes.____(None)
Cevap
libc = ctypes.CDLL(None)

Açıklama: CDLL(None) varsayılan C kütüphanesini yükler.

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