多个定义的主要 如何正确地在C++程序中实现Lua?我下载了Lua源代码,将.c文件放在src文件夹中,将.h文件放在include文件夹中,将Lua.h包含在程序的源代码中(当然带有extern“c”{}),然后点击“Build” 这就是所有教程告诉我如何用一个C++项目使用Lua的方法。

多个定义的主要 如何正确地在C++程序中实现Lua?我下载了Lua源代码,将.c文件放在src文件夹中,将.h文件放在include文件夹中,将Lua.h包含在程序的源代码中(当然带有extern“c”{}),然后点击“Build” 这就是所有教程告诉我如何用一个C++项目使用Lua的方法。,c++,lua,definition,main,C++,Lua,Definition,Main,但是现在我得到了错误“main的多重定义”和Lua代码中无法解析的一些符号。我理解第一个错误的含义(冲突是因为Lua有一个main,而我的程序也有一个main),但是我如何解决它呢 我是否理解在C++程序中实现Lua完全错误? 检查以确保您没有包含“代码> LUAC.C./COD>, LUA.C./COD>,以及与Lua一起使用的源代码中包含的任何其他程序的源代码。Lua的源代码包括一些额外的实用程序(即luac),很可能您只是将它们包含在项目中,而忘记删除它们,从而导致有多个main 简言之,

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


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

检查以确保您没有包含“代码> LUAC.C./COD>,<代码> LUA.C./COD>,以及与Lua一起使用的源代码中包含的任何其他程序的源代码。Lua的源代码包括一些额外的实用程序(即luac),很可能您只是将它们包含在项目中,而忘记删除它们,从而导致有多个
main

简言之,这些是独立的程序,您不会将其添加到项目中。如果可以,只需正常构建Lua,链接到库,并正常包含头文件

所以,关于你误解如何使用Lua的问题,你可能在某种程度上误解了。完全可以将Lua的源代码复制到您的代码中,尽管可能不可取。您真正想要做的是在终端中提取Lua源并构建它。然后(根据Lua的
INSTALL
文档),您需要键入
makeplatform
,在这里您将用当前使用的任何平台替换
platform
(即,我将使用
macosx
,您可以使用
linux
,请参阅支持哪些平台的
INSTALL
)。在那之后,您可以决定是否安装它,但您只需执行
makeinstall
(或
sudomakeinstall
)即可完成


之后,在编译时添加适当的链接器标志以链接到Lua(例如,
-llua
),或者在所选编辑器中更改项目的设置以执行大致相同的操作。这就是说,您需要参考Lua提供的
安装
文档,以获取有关这方面的完整说明。

我将Lua以另一种方式嵌入到我的项目中,首选方式,IMO:Lua作为一个静态库。

只需注释Lua.c和Luac.c中的两个main()块,然后点击build并再次运行


我是在Lua5.3上制作的。

我只包括这些:Lua.h、lualib.h和lauxlib.h。这就是教程告诉我的。是的,但我指的是.c文件,引用你的话,你“把…放在[your]src文件夹中”。你需要删除不必要的文件,或者,更好的是,从项目中删除Lua,然后链接到编译的库。好的,我会尝试删除Lua.c。我在哪里可以得到LIB?在lua.org上只有源文件可下载。@blubber你必须自己构建库,但它相当简单-我在回答中包含了一些非常基本的说明,但是你可以阅读lua提供的
INSTALL
文档,以获得更完整且不过度简化的信息。@Blubbernd:不太简单,你的意见有点错误。这对于未知库是正确的,但由于Lua非常流行,Linux开发者只需键入类似“sudo yast install Lua devel”的内容即可,无需构建Lua,因为它包含在大多数Linux发行版中。