vs2012环境下,cocos2dx3.4 c++项目调用Lua的环境搭建
2016-01-02 18:01
501 查看
添加lua库:属性->配置属性->链接器->输入->附加依赖项:编辑添加一条数据lua51.lib
添加包含目录:属性->配置属性->c/c++->附加包含目录:编辑添加两条数据
请确认自己项目中是否有Lua文件夹,路径是:项目名称\cocos2d\external\lua。如果没有的话,将cocos2dx引擎目录里的Lua文件夹复制到这个目录:项目名称\cocos2d\external。cocos2dx引擎目录里的Lua文件夹目录为:cocos2d-x-3.4\external\lua。
新建一个cocos2dx项目,在需要使用lua的头文件中定义如下代码:
在场景的初始化函数init()中输入以下代码:
在工程的resource目录下面新建一个lua文件:resource->添加->新建项->helloLua.lua
在新建的lua文件中输入:
运行该项目,如果提示找不到lua51.lib,直接去复制过来的Lua文件夹中搜索lua51.lib和lua51.dll,将其复制到proj.win32\Debug.win32中。
运行成功后结果为
open:0
isstr = 1
getStr = beauty girl
为了能让Lua文件中的print()函数能输出到VS2012的输出窗口,在运行的某个Lua文件前加上下面的代码:
添加包含目录:属性->配置属性->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;
相关文章推荐
- 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象
- cocos2d-x 新建项目 Cannot open include file: ‘cocos2d.h’
- cocos2dx 音效 粒子 数据存储
- cocosjs+ccs花屏解决
- cocos2d-x学习笔记【三】添加精灵及相关操作
- cocos2d-x main.cpp源码详析 v2.26
- cocos2d-x开发环境搭建及工程创建命令(v2.26&&v3.9)
- 【cocos2d-x 3.x 学习与应用总结】4: 理解CC_CALLBACK_0, CC_CALLBACK_1, CC_CALLBACK_2, CC_CALLBACK_3
- cocos2dx 碰撞检测
- cocos2d-x学习笔记【二】导演、场景、层。精灵介绍
- cocos2dx-触摸事件
- cocos2d-x frameworks 和 cocos引擎的关系
- cocos2d-x CCNode类
- 通过ccb(CocosBuilder)文件生成cocos2dx代码
- cocos2d-x学习笔记【一】创建自己的场景类
- Cocos2dx 3.0 简单的动作类
- cocos2d-x 3.9 异步动态加载
- cocostduio Text 控件 添加监听无法响应
- Cocos Studio及ListView使用简介
- Cocosd使用骨骼动画Spine