首先配置环境
1.先去下载一个lua源文件:http://www.lua.org
2.在Xcode中新建一个控制台应用程序,取名CppCLua
3.将第一步下载下来的文件解压,在终端中进入到解压目录下,输入make macosx,这样便可以生成Mac下面的lib文件。
4.接下来把刚刚解压缩的文件夹拷贝到你新建的工程下面,然后设置include路径和library路径。(注意,这里是不需要把头文件添加到Xcode里面的,只要指定include路径,编译的时候,编译器会自动去找的。)
因为我的Lua文件夹的路径是:
xxxx/CppCLua/lua-5.3.2,所以,我把search path和library path都别设置为:
$(SRCROOT)/CppCLua/lua-5.3.2/src
注意:如果直接添加lua的所有源码,则会编译报错。因为lua.c里面也有一个main函数。这个main函数是用来生成可执行程序的。 另外,如果是添加其它第三方的库,也可以参考这个方法,添加search path和library path
5.打开main.cpp,并包含以下头文件:
#include "lua.hpp"
如果此时编译不报错,则说明你之前设置的search path是正确的,如果报错,请自行调整search path。
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
就是大多数Lua教程里的代码嘛。
#include "lua.hpp"
int foo(lua_State *L)
{
int n = lua_tonumber(L,1);
lua_pushnumber(L,n + 1);
return 1;
}
int main(int argc,const char * argv[]) {
// 初始化lua虚拟机
// 今后其他所有Lua Api函数的调用都需要此指针作为第一参数,用来指定某个虚拟机。
lua_State * l = luaL_newstate();
// 把所有标准类库加载到指定的虚拟机
luaL_openlibs(l);
// 把函数压入lua的栈,然后设置为全局变量,这样lua就可以调用它了。
// 第二个参数是lua调用使用的函数名
lua_register(l,"foo",foo);
// 执行lua文件
luaL_dofile(l,"hello.lua");
//销毁指定虚拟机的所有对像
lua_close(l); return 0;
}
7.新建lua脚本:选择New->File->Other,然后命名为hello.lua, 以下是hello.lua里面的内容:
print(foo(100))
8.编译并运行
此时编译并运行,这时可能看不到控制台输出结果。因为你的Lua脚本没有拷贝到程序里面去,我们需要再设置一下。如下图所示: (注意:subpath要清空,copy only when installing去掉打勾)
编译并运行,运气好可以正常运行了输出结果
但是也可能报出了一大堆错误:
解决办法:
在Build Phases -> Link Binary With Libraries添加 liblua.a 文件,在你的lua文件夹下的src目录下:
最后工程目录如下:
编译运行,最后成功了,你已经掌握了第一课 使用C++调用lua。
下一课使用lua调用C++。