應用程式二進位介面 |
|
"通常新的 Lua 版本 [例如 4.0、5.0、5.1、5.2 等] 會以其他方式中斷 ABI..." [4] (/lists/lua-l/2011-06/msg00975.html)。然而,Lua x.y.z 版本與 x.y.w 版本相容 [5] (/lists/lua-l/2006-02/msg00137.html)。
關於 [LuaJit](/wiki/LuaJit),"LuaJIT 仍在連結器/動態載入器層級與 Lua 5.1 完全相容。這表示您可以針對標準 Lua 標頭編譯 C 模組,然後從 Lua 或 LuaJIT 載入同一個共用程式庫。" [1] (http://luajit.org/extensions.html)。
luaconf.h
中的編譯設定 (例如 LUA_COMPAT
) 有些會影響 ABI 相容性。
LuaList:2011-06/msg00979.html (/lists/lua-l/2011-06/msg00979.html) 討論了 5.2 和 [LuaJit](/wiki/LuaJit) 中的 ABI 相容性/不透明結構。
相關主題包括二進位模組如何連結至 C 執行時間程式庫 (例如 msvcrt.dll
或 msvcr100.dll
),Lua 程式庫如何連結 (例如,靜態、動態或透過 [LuaProxyDll](/wiki/LuaProxyDll)),以及 Lua 程式庫的命名方式 (例如 lua51.dll
或其他)。請參閱 [建立模組](/wiki/BuildingModules)。二進位模組如何尋找其他二進位模組 (例如,請參閱 [載入程式庫](/wiki/LoadLibrary)) 也會影響使用 ABI 是否成功。
FPU 狀態不一致 [2] (http://luajit.org/faq.html) 有時會導致 ABI 問題。
在 Lua 中進行 ABI 標準化的工作包括:[LuaBinaries](/wiki/LuaBinaries) [3] (http://luabinaries.sourceforge.net/manual.html#LuaBinariesCompatible)、LuaForWindows? 和 [LuaDist](/wiki/LuaDist) (部分由 CMake 慣例預先決定)。