主要的多个定义

时间:2011-07-08 08:42:17

标签: c++ lua definition main

如何在C ++程序中正确实现Lua?我下载了Lua源代码,将.c文件放在我的src文件夹中,将.h文件放在我的include文件夹中,在我程序的源代码中包含lua.h(当然是extern“C”{})并点击“Build”

这就是所有教程告诉我将Lua用于C ++项目的方式。

但是现在我得到错误“main的多重定义”和Lua代码中的一些无法解析的符号。我理解第一个错误意味着什么(冲突因为Lua有一个main而我的程序也有一个),但是我怎么解决呢?

或者我是否理解在C ++程序中实现Lua的完全错误?

3 个答案:

答案 0 :(得分:12)

检查以确保您没有包含luac.clua.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上做了这个。