在做cocos2d-x的游戏项目中添加了lua的json解析模块 遇到了以下情况 module 'cjson' not found: no field package.preload['cjson']cjson

作者: 卞銘
发布时间:2015-07-01 17:01:29

详细表述:

   本人在做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);

至此完成。

来源:http://www.cnblogs.com/mintch/p/3290887.html

推荐: