0Pricing
Lua Academy · Pelajaran

Dasar-Dasar FFI: ffi.cdef dan ffi.load

Deklarasikan tipe C dan muat pustaka bersama dengan modul ffi LuaJIT.

Dasar-Dasar FFI: ffi.cdef dan ffi.load adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.

Apa Itu FFI?

FFI (Foreign Function Interface) milik LuaJIT memungkinkan Anda memanggil fungsi pustaka C dan menggunakan struktur data C secara langsung dari Lua, tanpa perlu menulis kode pembungkus C.

Memuat FFI

Muat pustaka FFI dengan require("ffi"). FFI sudah terintegrasi dalam LuaJIT dan tidak tersedia di PUC Lua standar.

local ffi = require("ffi")

ffi.cdef: Mendeklarasikan Tipe C

ffi.cdef(cDeclarations) mengurai deklarasi C dan membuat tipe serta tanda tangan fungsi tersedia bagi FFI. Tidak ada kode aktual yang dikompilasi—hanya informasi tipe.

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

ffi.load: Memuat Pustaka Bersama

ffi.load(libname) memuat pustaka bersama dan mengembalikan objek yang bidangnya merupakan fungsi C yang telah dideklarasikan.

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

Mengakses Fungsi libc Secara Langsung

Pada sistem POSIX, ffi.C menyediakan akses ke semua fungsi pustaka C standar tanpa pemuatan eksplisit.

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

Jalur ffi.load

Berikan jalur lengkap atau nama pustaka standar. Di Linux, gunakan "m" untuk libm.so, "pthread" untuk pthreads, dan sebagainya.

Mendeklarasikan Struct

Deklarasikan struct C dalam cdef, lalu alokasikan dan akses dari Lua.

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

Anotasi dan Kualifikasi Tipe

cdef mendukung const, unsigned, int32_t, uint64_t, dan tipe C standar lainnya.

Beberapa Pemanggilan cdef

Anda dapat memanggil ffi.cdef beberapa kali. Deklarasi duplikat akan diabaikan. Biasanya, deklarasi diatur berdasarkan pustaka.

Perbedaan Platform

Tata letak struct dan tanda tangan fungsi dapat berbeda menurut platform (Windows dan Linux, 32-bit dan 64-bit). Gunakan ffi.os dan ffi.arch untuk mendeklarasikan tanda tangan yang benar secara kondisional.

Catatan Keamanan

FFI melewati keamanan tipe Lua. Deklarasi C yang salah dapat menyebabkan kerusakan memori, segfault, atau perilaku tidak terdefinisi. Selalu periksa kembali deklarasi berdasarkan header C yang sebenarnya.

Pertanyaan Dasar tentang FFI

Apa yang dilakukan ffi.cdef?

Ringkasan: Dasar-Dasar FFI

Gunakan ffi.cdef untuk mendeklarasikan tipe/fungsi C dan ffi.load untuk memuat pustaka bersama. ffi.C memberikan akses langsung ke libc. Selalu pastikan deklarasi sesuai dengan header C yang sebenarnya untuk menghindari kerusakan memori.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Dasar-Dasar FFI: ffi.cdef dan ffi.load” gratis?

Ya — teks lengkap “Dasar-Dasar FFI: ffi.cdef dan ffi.load” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Dasar-Dasar FFI: ffi.cdef dan ffi.load”?

Deklarasikan tipe C dan muat pustaka bersama dengan modul ffi LuaJIT. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Lua Academy?

Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.

Berapa lama pelajaran “Dasar-Dasar FFI: ffi.cdef dan ffi.load” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?

Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Dasar-Dasar FFI: ffi.cdef dan ffi.load
  2. Memanggil Fungsi C melalui FFI
  3. Pointer, Struct, dan Larik dalam FFI
  4. Callback: Meneruskan Fungsi Lua ke C
← Kembali ke Lua Academy