應用程式二進位介面

lua-users home
wiki

[應用程式二進位介面 (ABI)](http://en.wikipedia.org/wiki/Application_binary_interface) 是二進位層級上函式之間的介面。在 Lua 中,ABI 相容性通常表示使用一個 Lua 執行個體編譯的二進位模組,在另一個 Lua 執行個體中運作時無需重新編譯任何部分。

"通常新的 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.dllmsvcr100.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 慣例預先決定)。


[最近變更](/wiki/RecentChanges) · [喜好設定](/cgi-bin/wiki.pl?action=editprefs)
[編輯](/cgi-bin/wiki.pl?action=edit&id=ApplicationBinaryInterface) · [歷程](/cgi-bin/wiki.pl?action=history&id=ApplicationBinaryInterface)
最後一次編輯時間:2011 年 10 月 15 日上午 11:03 (GMT) (差異)