Cocos2dx -- 入门之c++ 调用lua

前端之家收集整理的这篇文章主要介绍了Cocos2dx -- 入门之c++ 调用lua前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

首先配置环境

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。

跳转可以查看lua.hpp的内容,如下:

extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}

就是大多数Lua教程里的代码嘛。

6.在main.cpp里面添加以下内容

#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++。

猜你在找的Cocos2d-x相关文章