Lua Academy · पाठ

Lua में C फ़ंक्शन पंजीकृत करना

luaL_register और lua_pushcfunction से Lua स्क्रिप्ट में C फ़ंक्शन उपलब्ध कराएँ।

पाठ 3, कुल 4 में से13 चरण

Lua में C फ़ंक्शन पंजीकृत करना, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

अवलोकन

C फ़ंक्शन Lua स्क्रिप्ट के लिए उपलब्ध कराए जा सकते हैं। उनका हस्ताक्षर int myFunc(lua_State *L) होना चाहिए। वे स्टैक से आर्ग्युमेंट पढ़ते हैं और लौटाए जाने वाले मान push करते हैं।

C फ़ंक्शन हस्ताक्षर

Lua से कॉल किए जा सकने वाले हर फ़ंक्शन का प्रकार lua_CFunction होता है: वह lua_State* लेता है, आर्ग्युमेंट पढ़ता है, परिणाम push करता है और परिणामों की संख्या लौटाता है।

// C code
static int l_add(lua_State *L) {
  double a = luaL_checknumber(L, 1);
  double b = luaL_checknumber(L, 2);
  lua_pushnumber(L, a + b);
  return 1;  // one result
}

ग्लोबल के रूप में पंजीकरण

lua_pushcfunction(L, l_add) C फ़ंक्शन को push करता है, फिर lua_setglobal(L, "add") उसे Lua में ग्लोबल के रूप में पंजीकृत करता है।

// C code
lua_pushcfunction(L, l_add);
lua_setglobal(L, "add");
// Now Lua can call: add(3, 4)

luaL_newlib / luaL_register

luaL_Reg array और luaL_newlib का उपयोग करके C फ़ंक्शन के समूह को Lua मॉड्यूल के रूप में पंजीकृत करें।

// C code
static const luaL_Reg mylib[] = {
  {"add", l_add},
  {"mul", l_mul},
  {NULL, NULL}
};
luaL_newlib(L, mylib);
lua_setglobal(L, "mylib");
// Lua: mylib.add(1, 2)

आर्ग्युमेंट पढ़ना

luaL_checknumber(L, n), luaL_checkstring(L, n) आदि आर्ग्युमेंट पढ़ते और मान्य करते हैं। प्रकार गलत होने पर ये Lua त्रुटि उत्पन्न करते हैं।

एकाधिक मान लौटाना

कई मान push करें और उनकी संख्या लौटाएँ। Lua उन्हें एकाधिक लौटाए गए मानों के रूप में असाइन करेगा।

// C code
static int l_divmod(lua_State *L) {
  int a = luaL_checkinteger(L, 1);
  int b = luaL_checkinteger(L, 2);
  lua_pushinteger(L, a / b);
  lua_pushinteger(L, a % b);
  return 2;  // two results
}

C closures के लिए upvalues

C closures पंजीकरण के समय lua_pushcclosure(L, fn, n) का उपयोग करके upvalues कैप्चर करते हैं। lua_upvalueindex(n) से upvalues तक पहुँचें।

C से त्रुटि रिपोर्ट करना

C फ़ंक्शन से Lua त्रुटि उत्पन्न करने के लिए luaL_error(L, format, ...) कॉल करें। यह कभी वापस नहीं लौटता—यह protected call handler पर longjmp करता है।

// C code
if (divisor == 0)
  luaL_error(L, "division by zero at argument %d", 2);

C मॉड्यूल एक .so/.dll के रूप में

C मॉड्यूल एक luaopen_modname फ़ंक्शन उपलब्ध कराता है। Lua का require shared library को लोड करता है और मॉड्यूल को आरंभ करने के लिए उसे कॉल करता है।

// C code (shared library entry point)
int luaopen_mymod(lua_State *L) {
  luaL_newlib(L, mymod_funcs);
  return 1;
}

आर्ग्युमेंट की संख्या जाँचना

पास किए गए आर्ग्युमेंट की संख्या जाँचने के लिए lua_gettop(L) का उपयोग करें। luaL_checkany(L, n) सुनिश्चित करता है कि कम-से-कम n आर्ग्युमेंट दिए गए हैं।

LuaJIT FFI विकल्प

LuaJIT का FFI आपको C wrapper code लिखे बिना सीधे Lua से C फ़ंक्शन कॉल करने देता है। केवल फ़ंक्शन कॉल के लिए यह अक्सर सरल होता है। गहरे एकीकरण के लिए C API आवश्यक है।

C फ़ंक्शन प्रश्न

Lua से कॉल किए जा सकने वाले C फ़ंक्शन को क्या लौटाना आवश्यक है?

पुनरावृत्ति: C फ़ंक्शन पंजीकृत करना

Lua से कॉल किए जा सकने वाले C फ़ंक्शन का हस्ताक्षर int f(lua_State*) होता है। luaL_check* से आर्ग्युमेंट पढ़ें, परिणाम push करें और संख्या लौटाएँ। अलग-अलग फ़ंक्शन को lua_pushcfunction से या समूह में luaL_newlib से पंजीकृत करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Lua सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “Lua में C फ़ंक्शन पंजीकृत करना” पाठ निःशुल्क है?

हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Lua में C फ़ंक्शन पंजीकृत करना” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Lua में C फ़ंक्शन पंजीकृत करना” में मैं क्या सीखूँगा?

luaL_register और lua_pushcfunction से Lua स्क्रिप्ट में C फ़ंक्शन उपलब्ध कराएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Lua में C फ़ंक्शन पंजीकृत करना” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Lua C API का स्टैक मॉडल
  2. C से Lua फ़ंक्शन कॉल करना
  3. Lua में C फ़ंक्शन पंजीकृत करना
  4. स्थिति प्रबंधन और त्रुटि प्रबंधन
← Lua Academy पर वापस जाएँ