在win32(XP、Vista等)上将Lua绑定到Ada?

我找到了唯一一个将Lua绑定到Ada的公共库(http://coreland.ath.cx/code/lua-ada),但在Windows平台上如何使用它? 我需要在我的ada项目中使用什么才能使project-files中定义的lua.ads.adb库正常工作?

我尝试将lua源文件放在我的ada项目目录中进行编译,但这没有任何作用 - GNAT会引发类似于“undefined reference to <c ++ function>”的错误。

原文链接 https://stackoverflow.com/questions/3992374

点赞
stackoverflow用户29639
stackoverflow用户29639

Windows 似乎不在 Lua-Ada 支持的平台列表 中。不过,这些绑定应该可以在其他 Gnat 平台上移植。你需要获取 Windows Lua 库(最有可能是一个 DLL),然后将两者以某种方式连接起来。

这是可行的——我曾经用 Clips 做过类似的事情。然而,任何想要做这件事情的人都需要对 C/C++ 链接器、Mingwin 对 Windows 库(通常通过 DLL)的支持,以及 Ada 如何与 C 链接工作有相当熟悉的了解。

2010-10-21 23:22:49
stackoverflow用户483603
stackoverflow用户483603

只有通过反复测试,我才发现如何安全地绑定 Lua。

首先是将 lua-ext.c 从 Ada-Lua 包中解压缩并将所有 Lua-源代码移到主 Ada 项目目录下。然后将 lua.c 重命名为 lual.c(或者其他同等的名称),以消除相同目标文件名('lua.ads->lua.o | lua.c->lua.o')的错误。最后一步是打开 GNAT 中的 C 编译器。可以通过“Project - Edit project properties - Languages”来完成。

这就是我让我的 lua 文件在 Ada 程序中工作所做的全部事情。

P.S. 要在 Ada 程序中打开所有可用的 Lua 库,应该调用这两个过程:

Lua.Lib.Open_Base(Lua.State_t); -- this will append to _G all main functions
Lua.Lib.Open_Libs(Lua.State_t); -- this will append math, string, package, etc. libraries
2010-10-22 13:29:19