<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">新建一个Quick工程,用Xcode编译软件打开</span>
- 在此处新建一个C++文件
- 在Test.h里面引入三个头文件,添加一些方法
<pre name="code" class="cpp">#include <stdio.h> #include "cocos2d.h" #include <string> USING_NS_CC; extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" } class Test { public: Test(); void fangwenbianlian(); void loadFunction(); static int l_show(lua_State * l); ~Test(); private: lua_State *luatest; };
4.Test.cpp.每个方法都有详细注释,应该看得懂
5.同个目录下新建一个简单的Lua文件#include "Test.h" Test::Test() { //声明一个指针 luatest =luaL_newstate(); //打开Lua库 luaL_openlibs(luatest); //压入函数, lua_pushcfunction(luatest, l_show); lua_setglobal(luatest, "l_show"); //加载Lua文件 std::string path = FileUtils::getInstance() -> fullPathForFilename("Mylua.lua"); luaL_dofile(luatest,path.c_str()); lua_pcall(luatest, 0, 0, -1); //测试函数 fangwenbianlian(); loadFunction(); } //访问Lua里的变量 void Test::fangwenbianlian(){ lua_pcall(luatest, 0, 0, -1); CCAssert(luatest,"文件读取错误!!"); lua_getglobal(luatest, "username"); char * rlt = (char*)lua_tostring(luatest, -1); CCLOG("username is:%s",rlt); } //访问Lua里的函数 void Test::loadFunction(){ lua_getglobal(luatest, "getrlt"); lua_pushnumber(luatest, 12); lua_pcall(luatest,1, 2, -1); CCAssert(luatest,"文件读取错误!!"); char *rlt = (char*)lua_tostring(luatest, -1); char *rlt1 = (char*)lua_tostring(luatest, -2); CCLOG("rlt ==>%s",rlt); CCLOG("rlt ==>%s",rlt1); } int Test:: l_show(lua_State * l){ lua_pushstring(l, "C++函数里的内容"); return 1; } Test::~Test() { if (luatest) { delete luatest; luatest=NULL; } }
6.
Lua文件里写入
print("Test My Lua!") username = "ChenApple" function getrlt(x) print("hungjinhui") print("传进来的参数为:" ..x) return "OK","YES" end print("我调了C++函数 " .. l_show())
7.最后一步,也是最重要的,
在AppDelegate.cpp,引入Test.h头文件.然后在bool AppDelegate::applicationDidFinishLaunching()函数里
实例一个Test对象
Test *test =new Test();
以上就是一个小Demo