//******************************************************************
// 文件名: LuaSystem.h
// 路 径: d:\GameWork\Code\SrcTest\LuaApp\LuaApp\LuaSystem.h
// 版 权: (C) 从这里开始
// 创建人: 陈泽丹
// 日 期: 2014-10-26 14:12
// 版 本: 1.0
// 描 述:
//************************** 修改记录 ******************************
// 修改人:
// 日 期:
// 描 述:
//******************************************************************
#ifndef _LUASYSTEM_H__
#define _LUASYSTEM_H__
#include "lua.hpp"
#pragma comment(lib, "lua51.lib")
#pragma comment(lib, "tolua++.lib")
//tolua_begin
class LuaSystem
{
public:
static LuaSystem* GetInstance();
bool LoadFile( const char* _strFilePath );
void Log( const char* _log );
//tolua_end
public:
void Start();
void Stop();
private:
LuaSystem(void);
virtual ~LuaSystem(void);
static LuaSystem *g_pLuaSystem;
lua_State *m_pLuaState;
//tolua_begin
};
//tolua_end
#endif // _LUASYSTEM_H_
#include "LuaSystem.h"
#include
using namespace std;
int tolua_LuaSystem_open(lua_State* tolua_S);
LuaSystem* LuaSystem::g_pLuaSystem = nullptr;
LuaSystem* LuaSystem::GetInstance()
{
if( nullptr == g_pLuaSystem )
{
g_pLuaSystem = new LuaSystem();
}
return g_pLuaSystem;
}
LuaSystem::LuaSystem(void):
m_pLuaState(nullptr)
{
}
LuaSystem::~LuaSystem(void)
{
}
void LuaSystem::Start()
{
if( nullptr == m_pLuaState )
{
m_pLuaState = luaL_newstate();
luaopen_base(m_pLuaState);
tolua_LuaSystem_open(m_pLuaState);
}
}
void LuaSystem::Stop()
{
if( nullptr != m_pLuaState )
{
lua_close(m_pLuaState);
m_pLuaState = nullptr;
}
}
bool LuaSystem::LoadFile( const char* _strFilePath )
{
return luaL_dofile(m_pLuaState, _strFilePath);
}
void LuaSystem::Log( const char* _log )
{
cout<<_log<
不能调试Lua时,看看优化项是不是已禁用 (/Od)
tolua++.exe -n LuaSystem -o ToluaAPI.cpp LuaSystem.pkg
指定压栈给lua的包名(相当于空间名)为 LuaSystem,以pkg生成cpp