(1)LUAプログラム
(2)C ++プログラム(ヘッダ)
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};クラスCLuaFn
{パブリック:
CLuaFn(無効)。
〜CLuaFn(無効)。
空のInit(); //オブジェクトポインタパラメータのLuaを初期化します
空クローズ(); //閉じるオブジェクトのポインタのLua
BOOL LoadLuaFile(のconstのchar * pFileName); //指定されたファイルを読み込むのLua
BOOL CallFileFn(のconstのchar * pFunctionName、int型nParam1、int型nParam2); //関数で指定されたプライベートLuaのファイルを実行します。
lua_State * m_pState; //これは国家のLuaのオブジェクトポインタである、あなたはLuaのファイルに対応することができます
}。
(3)C ++プログラム(.cppファイル)
#include "CLuaFn.h"
CLuaFn :: CLuaFn(無効){m_pState = NULL;}; //やっフレーズ
CLuaFn ::〜CLuaFn(ボイド){}。
//初期化関数のボイドCLuaFn ::初期化()
{
もし(NULL == m_pState)
{
m_pState = lua_open(); //オブジェクトのLUAへのポインタを返します。
luaL_openlibs(m_pState); //は、あなたが使用する可能性のあるすべての基本的なLuaのライブラリをロード}
}
)//近いとLuaが無効CLuaFnオブジェクト::閉じる(リソースを解放
{
(NULL!= m_pState)の場合
{
lua_close(m_pState)。
m_pState = NULL;
}
}
BOOL CLuaFn :: LoadLuaFile(のconstのchar * pFileName)
{
nRet int型= 0;
もし(NULL == m_pState)
{
printf( "[CLuaFn :: LoadLuaFile] m_pStateがNULL./nです")。
falseを返します。
}
試みは、プログラムの初期化を配置するとき//ファイルを読み込みます
nRet = luaL_dofile(m_pState、pFileName)。
(nRet!= 0)の場合
{
printf(pFileName、nRet、(m_pState、-1)lua_tostring "[CLuaFn :: LoadLuaFile] luaL_loadfile(%s)は、ファイル(%d)が(%S)./ nが")。
falseを返します。
}
trueを返します。
}
BOOL CLuaFn :: CallFileFn(のconstのchar * pFunctionName、int型nParam1、int型nParam2)
{
nRet int型= 0;
もし(NULL == m_pState)
{
printf( "[CLuaFn :: CallFileFn] m_pStateがNULL./nです")。
falseを返します。
}
//現在のLUAファイルおよび機能位置lua_getglobal(m_pState、pFunctionName)へのポインタをロードするかどうか、あなたのLuaの機能を検証します。
//プッシュ(配列:左パラメータ):第1のパラメータlua_pushnumber(m_pState、nParam1)。
//プッシュ:第2のパラメータlua_pushnumber(m_pState、nParam2)を、
//この関数が実行され、2は入力パラメータの数であり、戻り値は、数1であります
nRet = lua_pcall(m_pState、2、1、0);
(nRet!= 0)の場合
{
printf( "[CLuaFn :: CallFileFn】通話機能(%S)エラー(%d)は./ N"、pFunctionName、nRet)。
falseを返します。
}
IF(lua_isnumber(m_pState、-1)== 1)
{
-ēnsumuslua_tonumber = INT(m_pState、-1)。
printf( "[CLuaFn :: CallFileFn] I =%のD / N"、-ēnsumus)。
}
trueを返します。
}
(4)C ++プログラム(メインファイル)
#include "CLuaFn.h" INTメイン(int型ARGC、CHAR * ARGV [])
{
CLuaFn LuaFn;
LuaFn.Init();
LuaFn.LoadLuaFile( "Sample.lua");
LuaFn.CallFileFn( "func_Add"、11、12)。
getchar関数();
0を返します。
}
注意:このプログラムは非常に詳細なメモは、私はコードを説明するためにここにいないよされています。ダウンロードしてインストールLUA後、VS2010で私はまた、適切なライブラリを紹介したいと思います。次のようにショットは、以下のとおりです。