0Pricing
Lua Academy · Ders

FFI Temelleri: ffi.cdef ve ffi.load

LuaJIT'in ffi modülüyle C türlerini bildirin ve paylaşılan kitaplıkları yükleyin.

FFI Temelleri: ffi.cdef ve ffi.load, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.

FFI Nedir?

LuaJIT'in FFI (Foreign Function Interface) özelliği, C sarmalayıcı kodu yazmaya gerek kalmadan C kitaplığı işlevlerini çağırmanıza ve C veri yapılarını doğrudan Lua'dan kullanmanıza olanak tanır.

FFI'yi Gerektirme

FFI kitaplığını require("ffi") ile yükleyin. Bu özellik LuaJIT'in içinde yerleşiktir ve standart PUC Lua'da kullanılamaz.

local ffi = require("ffi")

ffi.cdef: C Türlerini Bildirme

ffi.cdef(cDeclarations), C bildirimlerini ayrıştırır ve türleri ile işlev imzalarını FFI için kullanılabilir hâle getirir. Gerçek bir kod derlenmez; yalnızca tür bilgileri alınır.

ffi.cdef[[
  int printf(const char *fmt, ...);
  double sqrt(double x);
  typedef struct { int x; int y; } Point;
]]

ffi.load: Paylaşılan Kitaplık Yükleme

ffi.load(libname), bir paylaşılan kitaplık yükler ve alanları bildirilen C işlevleri olan bir nesne döndürür.

local C = ffi.C       -- access to libc on POSIX
local m = ffi.load("m")  -- libm
print(m.sqrt(2.0))       -- 1.414...

libc İşlevlerine Doğrudan Erişme

POSIX sistemlerinde ffi.C, açıkça yükleme yapmadan tüm standart C kitaplığı işlevlerine erişim sağlar.

ffi.cdef[[ int puts(const char *s); ]]
ffi.C.puts("Hello from C!")

ffi.load Yolu

Tam yolu veya standart bir kitaplık adını geçirin. Linux'ta libm.so için "m", iş parçacıkları için "pthread" ve benzerlerini kullanın.

Yapıları Bildirme

C yapılarını cdef içinde bildirin, ardından bunları Lua'dan ayırıp erişin.

ffi.cdef[[
  typedef struct { float x, y, z; } Vec3;
]]
local v = ffi.new("Vec3", {1, 2, 3})
print(v.x, v.y, v.z)  -- 1.0  2.0  3.0

Tür Açıklamaları ve Niteleyiciler

cdef; const, unsigned, int32_t, uint64_t ve diğer standart C türlerini destekler.

Birden Çok cdef Çağrısı

ffi.cdef işlevini birden çok kez çağırabilirsiniz. Yinelenen bildirimler yok sayılır. Genellikle bildirimleri kitaplığa göre düzenleyin.

Platform Farkları

Yapı yerleşimleri ve işlev imzaları platforma göre (Windows ve Linux, 32 bit ve 64 bit) farklılık gösterebilir. Doğru imzaları koşullu olarak bildirmek için ffi.os ve ffi.arch kullanın.

Güvenlik Notu

FFI, Lua'nın tür güvenliğini devre dışı bırakır. Yanlış C bildirimleri bellek bozulmasına, segmentasyon hatalarına veya tanımsız davranışa yol açar. Bildirimleri her zaman gerçek C başlık dosyalarıyla karşılaştırarak dikkatle denetleyin.

FFI Temelleri Sorusu

ffi.cdef ne yapar?

Özet: FFI Temelleri

C türlerini ve işlevlerini bildirmek için ffi.cdef, paylaşılan kitaplıkları yüklemek için ffi.load kullanın. ffi.C, libc'ye doğrudan erişim sağlar. Bellek bozulmasını önlemek için bildirimlerin gerçek C başlıklarıyla eşleştiğini her zaman doğrulayın.

Sıkça Sorulan Sorular

“FFI Temelleri: ffi.cdef ve ffi.load” dersi ücretsiz mi?

Evet — “FFI Temelleri: ffi.cdef ve ffi.load” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.

“FFI Temelleri: ffi.cdef ve ffi.load” dersinde ne öğreneceğim?

LuaJIT'in ffi modülüyle C türlerini bildirin ve paylaşılan kitaplıkları yükleyin. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Lua Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“FFI Temelleri: ffi.cdef ve ffi.load” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. FFI Temelleri: ffi.cdef ve ffi.load
  2. FFI ile C İşlevlerini Çağırma
  3. FFI'da İşaretçiler, Yapılar ve Diziler
  4. Geri Çağırmalar: Lua İşlevlerini C'ye Geçirme
← Lua Academy Sayfasına Dön