vs2012环境下,cocos2dx3.4 c++项目调用Lua的环境搭建

  1. 添加lua库:属性->配置属性->链接器->输入->附加依赖项:编辑添加一条数据lua51.lib
  2. 添加包含目录:属性->配置属性->c/c++->附加包含目录:编辑添加两条数据

    $(EngineRoot)external\lua
    $(EngineRoot)external\lua\luajit\include
  3. 请确认自己项目中是否有Lua文件夹,路径是:项目名称\cocos2d\external\lua。如果没有的话,将cocos2dx引擎目录里的Lua文件夹复制到这个目录:项目名称\cocos2d\external。cocos2dx引擎目录里的Lua文件夹目录为:cocos2d-x-3.4\external\lua。

  4. 新建一个cocos2dx项目,在需要使用lua的头文件中定义如下代码:

    extern "C"{
    #include <lua.h>
    #include <lualib.h>
    #include <lauxlib.n>
    };
  5. 在场景的初始化函数init()中输入以下代码:

    lua_State* pL = lua_open();
    luaL_openlibs(pL);
    
    int err = luaL_dofile(pL,"helloLua.lua");
    log("open:%d",err);
    
    lua_settop(pL,0);
    lua_getglobal(pL,"myName");
    
    int isstr = lua_isstring(pL,1);
    log("isstr = %d",isstr);
    
    if(isstr!=0)
    {
        const char* str = lua_tostring(pL,1);
        log("getStr = %s",str);
    }
    
    lua_close(pL);
    return true;
  6. 在工程的resource目录下面新建一个lua文件:resource->添加->新建项->helloLua.lua

  7. 在新建的lua文件中输入:

    myName="beauty girl"
  8. 运行该项目,如果提示找不到lua51.lib,直接去复制过来的Lua文件夹中搜索lua51.lib和lua51.dll,将其复制到proj.win32\Debug.win32中。

  9. 运行成功后结果为
    open:0
    isstr = 1
    getStr = beauty girl

  10. 为了能让Lua文件中的print()函数能输出到VS2012的输出窗口,在运行的某个Lua文件前加上下面的代码:

function babe_tostring(...)  
    local num = select("#",...);  
    local args = {...};  
    local outs = {};  
    for i = 1, num do  
        if i > 1 then  
            outs[#outs+1] = "\t";  
        end  
        outs[#outs+1] = tostring(args[i]);  
    end  
    return table.concat(outs);  
end  

local babe_print = print;  
local babe_output = function(...)  
    babe_print(...);  

    if decoda_output ~= nil then  
        local str = babe_tostring(...);  
        decoda_output(str);  
    end  
end  
print = babe_output;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值