详细表述:
本人在做cocos2d-x的游戏项目,需要用到lua自己的json解析模块,将解析模块按照方式拉到项目里,头文件添加上,在需要用的
地方添加如下代码 将模块运用到lua引擎上
lua_State * state = pEngine->getLuaStack()->getLuaState();
luaopen_lua_extensions(state);
执行出现了如下错误信息
错误信息如下:
Cocos2d: Get data from file(cjson.lua) failed!
Cocos2d: can not get file data of cjson.lua
Cocos2d: [LUA ERROR] ...9707-79E6122956B2/KaPaiSeed.app/network_and_json.lua:7: module 'cjson' not found:
no field package.preload['cjson']cjson
no file './cjson.lua'
no file '/usr/local/share/lua/5.1/cjson.lua'
no file '/usr/local/share/lua/5.1/cjson/init.lua'
no file '/usr/local/lib/lua/5.1/cjson.lua'
no file '/usr/local/lib/lua/5.1/cjson/init.lua'
no file './cjson.so'
no file '/usr/local/lib/lua/5.1/cjson.so'
no file '/usr/local/lib/lua/5.1/loadall.so'
原因分析:
lua的模块必须在使用之前加载,项目代码较为混乱,添加时将模块加载放在了后面造成的
解决方案:
在lua引擎使用,需要用到它的代码之前进行模块加载。最好在AppDelegate里面加载此类模块,头文件引用
#include "lua_extensions.h"
在
bool AppDelegate::applicationDidFinishLaunching()
方法里
// register lua engine
CCLuaEngine* pEngine = CCLuaEngine::defaultEngine();
lua_State * state = pEngine->getLuaStack()->getLuaState();
luaopen_lua_extensions(state);
至此完成。