C++中怎么执行LUA 的整篇代码不是一个函数
local function createLayer()
local layer = CCLayer:create();
local sprite = CCSprite:create("bg.png");
sprite:setPosition(200, 200);
return layer;
end
local scene = CCScene:create();
scene:addChild(createLayer());
CCDirector:sharedDirector():replaceScene(scene);
BOOL LuaInit( char * pScriptFile )
{
char szScriptFilePath[ MAX_PATH ];
BOOL bResult = FALSE;
__try
{
GetCurrPathName( szScriptFilePath, MAX_PATH );
strcat_s( szScriptFilePath, MAX_PATH, pScriptFile );
g_pLua = luaL_newstate();
if( g_pLua == NULL )
__leave;
if( ! RegisterLuaAPI())
__leave;
if( luaL_loadfile( g_pLua, szScriptFilePath ) != 0 )
{
if( MessageBox( NULL, "配置文件中存在语法错误,无法加载,要查看详细信息吗?", "错了", MB_YESNO ) == IDYES )
MessageBox( NULL, lua_tostring( g_pLua, -1 ), "存在下列语法错误", MB_OK
[解决办法]
MB_ICONINFORMATION );
__leave;
}
if( lua_pcall( g_pLua, 0, LUA_MULTRET, 0 ) != 0 )
{
if( MessageBox( NULL, "配置文件中存在语法错误,无法编译,要查看详细信息吗?", "错了", MB_YESNO ) == IDYES )
MessageBox( NULL, lua_tostring( g_pLua, -1 ), "存在下列语法错误", MB_OK
[解决办法]
MB_ICONINFORMATION );
lua_pop( g_pLua, 1 );
__leave;
}
bResult = TRUE;
}
__finally
{
if( ! bResult )
{
if( g_pLua != NULL )
{
lua_close( g_pLua );
g_pLua = NULL;
}
}
}
return bResult;
}
some_function( ..... )
{
lua_getglobal( g_pLua, "createLayer" );
if( ! lua_isfunction( g_pLua, -1 ))
{
MessageBox( NULL, "脚本中不存在createLayer函数", "有问题", MB_OK
[解决办法]
MB_ICONERROR );
lua_pop( g_pLua, 1 );
}
else
{
if( lua_pcall( g_pLua, 0, 1, 0 ) != 0 )
{
if( MessageBox( NULL, "调用createLayer发生错误,是否查看详细信息?", "错了", MB_YESNO ) == IDYES )
MessageBox( NULL, lua_tostring( g_pLua, -1 ),"以下是错误信息", MB_OK
[解决办法]
MB_ICONINFORMATION );
lua_pop( g_pLua, 1 );
__leave;
}
else
{
// now , your result in lua stack..
// do somthing if you want
}
}