FFI की मूल बातें: ffi.cdef और ffi.load
LuaJIT के ffi मॉड्यूल से C प्रकार घोषित करें और साझा लाइब्रेरी लोड करें।
FFI की मूल बातें: ffi.cdef और ffi.load, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
FFI क्या है
LuaJIT का FFI (Foreign Function Interface) आपको बिना किसी C रैपर कोड के सीधे Lua से C लाइब्रेरी फ़ंक्शन कॉल करने और C डेटा संरचनाओं का उपयोग करने देता है।
FFI को लोड करना
require("ffi") से FFI लाइब्रेरी लोड करें। यह LuaJIT में अंतर्निहित है और मानक PUC Lua में उपलब्ध नहीं है।
local ffi = require("ffi")ffi.cdef: C प्रकार घोषित करना
ffi.cdef(cDeclarations) C घोषणाओं को पार्स करता है और प्रकारों तथा फ़ंक्शन हस्ताक्षरों को FFI के लिए उपलब्ध कराता है। कोई वास्तविक कोड संकलित नहीं होता—केवल प्रकार की जानकारी ली जाती है।
ffi.cdef[[
int printf(const char *fmt, ...);
double sqrt(double x);
typedef struct { int x; int y; } Point;
]]ffi.load: साझा लाइब्रेरी लोड करना
ffi.load(libname) एक साझा लाइब्रेरी लोड करता है और ऐसा ऑब्जेक्ट लौटाता है, जिसके फ़ील्ड घोषित C फ़ंक्शन होते हैं।
local C = ffi.C -- access to libc on POSIX
local m = ffi.load("m") -- libm
print(m.sqrt(2.0)) -- 1.414...libc फ़ंक्शन को सीधे एक्सेस करना
POSIX सिस्टम पर ffi.C बिना स्पष्ट रूप से लोड किए सभी मानक C लाइब्रेरी फ़ंक्शन तक पहुँच प्रदान करता है।
ffi.cdef[[ int puts(const char *s); ]]
ffi.C.puts("Hello from C!")ffi.load का पथ
पूरा पथ या किसी मानक लाइब्रेरी का नाम दें। Linux पर libm.so के लिए "m", pthreads के लिए "pthread" आदि का उपयोग करें।
स्ट्रक्चर घोषित करना
cdef में C स्ट्रक्चर घोषित करें, फिर उन्हें Lua से allocate करके एक्सेस करें।
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प्रकार के एनोटेशन और क्वालिफ़ायर
cdef में const, unsigned, int32_t, uint64_t और अन्य मानक C प्रकारों का समर्थन है।
एकाधिक cdef कॉल
आप ffi.cdef को कई बार कॉल कर सकते हैं। दोहराई गई घोषणाओं को अनदेखा कर दिया जाता है। आमतौर पर घोषणाओं को लाइब्रेरी के अनुसार व्यवस्थित करें।
प्लेटफ़ॉर्म के अंतर
स्ट्रक्चर का लेआउट और फ़ंक्शन हस्ताक्षर प्लेटफ़ॉर्म के अनुसार अलग हो सकते हैं (Windows और Linux, 32-बिट और 64-बिट)। सही हस्ताक्षर सशर्त रूप से घोषित करने के लिए ffi.os और ffi.arch का उपयोग करें।
सुरक्षा संबंधी सूचना
FFI Lua की प्रकार-सुरक्षा को दरकिनार करता है। गलत C घोषणाओं से मेमोरी करप्शन, सेगमेंटेशन फ़ॉल्ट या अपरिभाषित व्यवहार हो सकता है। घोषणाओं को वास्तविक C हेडर के अनुसार हमेशा दोबारा जाँचें।
FFI की मूल बातें: प्रश्न
ffi.cdef क्या करता है?
पुनरावलोकन: FFI की मूल बातें
C प्रकारों/फ़ंक्शन को घोषित करने के लिए ffi.cdef और साझा लाइब्रेरी लोड करने के लिए ffi.load का उपयोग करें। ffi.C libc तक सीधी पहुँच देता है। मेमोरी करप्शन से बचने के लिए हमेशा सुनिश्चित करें कि घोषणाएँ वास्तविक C हेडर से मेल खाती हों।
एआई शिक्षक के साथ Lua सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 40
- पाठ
- 159
अक्सर पूछे जाने वाले प्रश्न
क्या “FFI की मूल बातें: ffi.cdef और ffi.load” पाठ निःशुल्क है?
हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “FFI की मूल बातें: ffi.cdef और ffi.load” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“FFI की मूल बातें: ffi.cdef और ffi.load” में मैं क्या सीखूँगा?
LuaJIT के ffi मॉड्यूल से C प्रकार घोषित करें और साझा लाइब्रेरी लोड करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।
“FFI की मूल बातें: ffi.cdef और ffi.load” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- FFI की मूल बातें: ffi.cdef और ffi.load
- FFI से C फ़ंक्शन कॉल करना
- FFI में पॉइंटर, स्ट्रक्चर और ऐरे
- कॉलबैक: Lua फ़ंक्शन C को देना