--- title: LuaJIT FFI और मूल सीमा summary: प्रकार, एबीआई संगतता और क्यों एक पाया हस्ताक्षर खेल निर्माण के बीच अंधेरे कॉपी नहीं किया जा सकता है। section: native kind: guide status: reference updated: 2026-10-22 tags: ["X4","modding","ffi"] sources: ["https://github.com/eg3r/X4Native"] --- ## जब एक मूल परत की आवश्यकता होती है सामान्य XML परिवर्तन और UI विंडो को आमतौर पर इसकी आवश्यकता नहीं होती है। जब उपलब्ध हो तो FFI या कस्टम DLL का उपयोग करें MD और Lua UI कार्य को व्यक्त नहीं कर सकते हैं। अंतर्निहित Lua फ़ंक्शन, FFI निर्यात और कस्टम Lua C मॉड्यूल अलग-अलग अनुबंधों के साथ अलग-अलग इंटरफ़ेस हैं। ## एबीआई घोषित करना नीचे दिए गए उदाहरण में संबंधित खेल निर्माण के साथ उपयोग की जाने वाली घोषणाएं दर्शाती हैं। सफल `cdef` निर्यात उपलब्धता साबित नहीं करता है। `pcall` गलत हस्ताक्षर को सुरक्षित नहीं बनाता है। अपने स्वयं के X4 संस्करण में प्रकार, कॉल सम्मेलन और समर्थन की जांच करें। ```lua local ffi = require("ffi") if ffi.cdef then pcall(ffi.cdef, [[ bool IsGamePaused(void); bool IsStartmenu(void); ]]) end ``` ## तृतीय पक्ष घटक X4Native एक अलग पुस्तकालय है अपने लोडर और एबीआई के साथ, प्रत्येक Lua मॉड के लिए एक आवश्यक निर्भरता नहीं है. केवल जब प्रयोग किया जाए तब ही घोषित और सत्यापित करें। यूआई संरक्षित मोड लोड तंत्र को भी प्रभावित करता है; इसे निष्क्रिय करना एक सामान्य डेटा पैच के लिए पहला कदम नहीं है। ## मूल्य प्रकार एक सूचक, `uint64_t` और Lua संख्या परस्पर नहीं बदला जा सकता है। पढ़ें [पहचान की सटीकता](wiki:ids-and-precision) धारावाहिकीकरण या भाषाओं को पार करने से पहले। प्रत्यक्ष मेमोरी ऑफसेट बिल्ड पर और भी अधिक निर्भर करता है। उत्परिवर्तन का परीक्षण करने से पहले सुरक्षित रीडबैक और वस्तु पहचान स्थापित करें।