詳細表述:
本人在做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);
至此完成。