如何在C ++程序中正确实现Lua?我下载了Lua源代码,将.c文件放在我的src文件夹中,将.h文件放在我的include文件夹中,在我程序的源代码中包含lua.h(当然是extern“C”{})并点击“Build”
这就是所有教程告诉我将Lua用于C ++项目的方式。
但是现在我得到错误“main的多重定义”和Lua代码中的一些无法解析的符号。我理解第一个错误意味着什么(冲突因为Lua有一个main而我的程序也有一个),但是我怎么解决呢?
或者我是否理解在C ++程序中实现Lua的完全错误?
答案 0 :(得分:12)
检查以确保您没有包含luac.c
,lua.c
以及Lua附带的任何其他程序的源代码。 Lua的源代码包括一些额外的实用程序(即luac),你可能只是将它们包含在项目中而忘记删除它们,从而导致有多个main
。
简而言之,这些是您不添加到项目中的单独程序。如果可以,只需正常构建Lua,链接到库,并正常包含头文件。
所以,关于你误解如何使用Lua,你可能在某种程度上做了。完全可以将Lua的源代码复制到您的代码中,尽管可能不可取。你真正想要做的是在终端中提取已提取的Lua源并构建它。然后(根据Lua的INSTALL
文档),您需要输入make platform
,在那里您将用您当前使用的平台替换platform
(即,我会使用macosx
,您可以使用linux
,请参阅支持哪些平台的INSTALL
。在那之后,如果你想安装它,它取决于你,但你只需要make install
(或sudo make install
)来完成它。
之后,要么在编译时添加适当的链接器标志以链接到Lua(例如,-llua
),要么在您选择的编辑器中更改项目的设置以执行大致相同的操作。也就是说,您需要参考Lua提供的INSTALL
文档,以获取有关此内容的完整说明。
答案 1 :(得分:1)
我正在以其他方式将Lua嵌入到我的项目中,首选方式,IMO:compiled Lua作为静态库。
答案 2 :(得分:0)
只需在Lua.c和Luac.c中注释两个main()块,然后点击构建并再次运行。
我在Lua 5.3上做了这个。