--- title: LuaJIT FFI und die native Grenze summary: Typen, Kompatibilität mit der Kompatibilität und warum eine gefundene Signatur nicht blind zwischen Spielaufbauten kopiert werden kann. section: native kind: guide status: reference updated: 2026-10-22 tags: ["X4","modding","ffi"] sources: ["https://github.com/eg3r/X4Native"] --- ## Wenn eine native Schicht benötigt wird Normale XML-Änderungen und UI-Fenster benötigen normalerweise keine. Verwenden Sie FFI oder eine benutzerdefinierte DLL, wenn verfügbar MD und Lua UI können die Aufgabe nicht ausdrücken. Integrierte Lua-Funktionen, FFI-Exporte und benutzerdefinierte Lua C-Module sind unterschiedliche Schnittstellen mit unterschiedlichen Verträgen. ## Erklärung des Das folgende Beispiel zeigt Erklärungen, die mit dem entsprechenden Spielaufbau verwendet werden. `cdef` die Ausfuhrverfügbarkeit nicht nachgewiesen hat. `pcall` macht keine falsche Signatur sicher. Verifizieren Sie Typen, rufen Sie Konvention und Unterstützung in Ihrer eigenen X4-Version. ```lua local ffi = require("ffi") if ffi.cdef then pcall(ffi.cdef, [[ bool IsGamePaused(void); bool IsStartmenu(void); ]]) end ``` ## Bestandteile von Dritten X4Native ist eine separate Bibliothek mit eigenem Loader und einem eigenen ABI, nicht eine erforderliche Abhängigkeit für jeden Lua Mod. Erklären und überprüfen Sie es nur bei der Verwendung. UI geschützten Modus auch Auswirkungen Lademechanismen; Entschärfung ist nicht der erste Schritt für einen gewöhnlichen Datenpatch. ## Werttypen Einen Zeiger, `uint64_t` und Lua-Nummer sind nicht austauschbar. Lesen [ID-Präzision](wiki:ids-and-precision) vor der Serialisierung oder Überkreuzung von Sprachen. Direkte Speicher-Offsets hängen noch stärker vom Aufbau ab. Stellen Sie sichere Rücklese- und Objektidentität vor dem Testen einer Mutation fest.