- 添加lua库:属性->配置属性->链接器->输入->附加依赖项:编辑添加一条数据lua51.lib
添加包含目录:属性->配置属性->c/c++->附加包含目录:编辑添加两条数据
$(EngineRoot)external\lua $(EngineRoot)external\lua\luajit\include
请确认自己项目中是否有Lua文件夹,路径是:项目名称\cocos2d\external\lua。如果没有的话,将cocos2dx引擎目录里的Lua文件夹复制到这个目录:项目名称\cocos2d\external。cocos2dx引擎目录里的Lua文件夹目录为:cocos2d-x-3.4\external\lua。
- 新建一个cocos2dx项目,在需要使用lua的头文件中定义如下代码:
extern "C"{
#include <lua.h>
#include <lualib.h>
#include <lauxlib.n>
};
在场景的初始化函数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;
在工程的resource目录下面新建一个lua文件:resource->添加->新建项->helloLua.lua
在新建的lua文件中输入:
myName="beauty girl"
运行该项目,如果提示找不到lua51.lib,直接去复制过来的Lua文件夹中搜索lua51.lib和lua51.dll,将其复制到proj.win32\Debug.win32中。
运行成功后结果为
open:0
isstr = 1
getStr = beauty girl为了能让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;