在l中嵌入lua代码

我试图遵循这里给出的关于将lua嵌入到C中的besic指南。我将代码逐字复制到我自己的embed.c文件中并执行列出的确切编译器命令:

cc -o embed embed.c \ -I/usr/local/include \ -L/usr/local/lib \ -llua -llualib 

我收到错误:

 embed.c:19:14: error: invalid storage class for function 'openlualibs' 

之后我将函数移到main之外,再次编译,得到:

 /usr/bin/ld: cannot find -llualib 

我不知道为什么我不能编译这个。 lua安装正确。 还有其他人遇到过这些问题吗? 如果这是一个糟糕的教程,请随意简单地指导我一个击球手。

在某些Linux发行版上,您可能需要安装lua-devel (或类似命名的)软件包,以便获得编译和链接项目所需的正确头文件和库符号链接。 如果您有liblualib-.so. ,例如liblualib-5.so.5.0 ,则可能需要安装devel软件包。

从lua 5.1开始, liblualib不存在。 以下是发布公告: http : //lua-users.org/lists/lua-l/2005-05/msg00186.html

嵌入Lua时我遇到了类似的问题。 我发现对我有用的是链接动态链接库(dl)和数学库(m)。 如果您没有使用第lmath标准库,则可能不需要数学库。

 cc -o embed embed.c -I/usr/local/include -L/usr/local/lib -llua -lm -ldl 

当然,这假定/ usr / local /是安装Lua文件的位置,这可能是正确的。

至于您链接的教程,我认为它可能已经过时了。 除了liblualib不再存在外,还有各自的function可以打开每个标准库。 这些是luaopen_ *函数。 这是相关的5.1参考手册条目。 (我假设您使用的是5.1,因为它似乎是软件包中可用的版本)至于更好的教程,我建议使用Lua编程 。 不幸的是,它是为Lua 5.0编写的。 它仍然是最相关的,但我建议您查看5.1参考手册的相关部分。