Lua 和C++的相互调用

Published: 11 Nov 2014 Category: 游戏研发

之前介绍过Lua和C++的相互调用原理以及cocos中如何绑定Lua和C++函数:LUA和cocos中函数的绑定以及lua和C++的相互调用

还举例介绍了在cocos中增加一个Lua绑定函数:在cocos中为addImageAsync函数添加Lua脚本绑定

这篇文章讲一下Lua和C++互相调用的基本步骤:

1.首先在vs中配置C++调用lua所需要的库: vc++目录:

链接器:

C++代码:


    int _tmain(int argc, _TCHAR* argv[])
    {

        printf("hello world\n");
        //初始化一个lua_State,之前介绍过,它是所有的Lua代码的执行环境
        lua_State* pL = luaL_newstate();
        //注册average函数
        lua_register(pL, "average", average);
        //lua中打开base/math/string库
        luaopen_base(pL);
        luaopen_math(pL);
        luaopen_string(pL);
        //执行test.lua文件,err为0表示执行正确
        int err = luaL_dofile(pL, "test.lua");
        cout<<"ERROR:"<<err<<endl;
        //取出myName变量
        lua_settop(pL, 0);
        lua_getglobal(pL, "myName");
        //判断栈中存储的是否是string类型,并输出
        int isstr = lua_isstring(pL, 1); 
        printf("isstr = %d", isstr);  
        string myname = lua_tostring(pL, 1);
        cout<<"\n"<<myname<<endl;

        lua_close(pL);
        return 0;
    }

Lua代码:


    myName = 'hello'
    print(myName,'lua')
    local avg, sum = average(10, 20, 30, 40, 50)
    print("The average is ", avg)
    print("The sum is ", sum)

结果如下: