只有一个公共库可以将Lua绑定到我找到的Ada(http://coreland.ath.cx/code/lua-ada),但它如何在Windows平台上使用?我需要在ada项目中使用什么才能使项目文件中定义的lua.ads.adb库正常工作?
我试图将lua源代码放入我的ada-project目录中进行编译,但这样做无效 - GNAT引发了类似undefined reference to <c++ function>
的错误。
答案 0 :(得分:2)
Windows似乎不在Lua-Ada's list of supported platforms上。尽管如此,绑定应该在某种程度上可以移植到其他Gnat平台上。你需要获得一个Windows Lua库(很可能是一个DLL)并以某种方式将两者拼接在一起。
这是可行的 - 我做过一次与Clips类似的事情。但是,执行此操作的任何人都需要(或变得)熟悉C / C ++链接器,Mingwin对Windows库的支持(通常通过DLL),以及Ada与C链接的接口如何工作。
答案 1 :(得分:2)
只有通过再次测试和测试,我才发现如何安全地绑定Lua。 首先是将来自Ada-Lua包的lua-ext.c和所有Lua源解压缩到主Ada项目目录。然后将lua.c重命名为lual.c(或相等的东西)以消除具有相同对象文件名的错误('lua.ads-&gt; lua.o | lua.c-&gt; lua.o')。最后一个是在GNAT中打开C编译器。它可以通过“项目 - 编辑项目属性 - 语言”来完成。
我所做的就是让我的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