c++調用lua例子
http://blog.csdn.net/bhwst/archive/2010/07/29/5774746.aspx
VC要編譯LUA文件必須先配置VC編程環境。。我用的是VC6.0,lua 5.1.4版
首先將lua的"lua.h" ,"lualib.h", "lauxlib.h" 這三個放在vc程序include文件夾下
然后將lua的lua5.1.lib放在lib文件夾下就OK了
下面看看我寫的一個小例子:
a.cpp
view plaincopy to clipboardprint?
#include "windows.h"
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment(lib,"lua5.1.lib")
lua_State * L;
static int clib(lua_State *L) //給lua調用的c函數必須定義成static int XXX(lua_State *L)
{
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
lua_pushstring(L,path);
return 1; //為什么要返回1?這是有依據的,該函數把結果壓入了棧,lua調用該函數將從棧中
//取1個結果
}
int main ( int argc, char *argv[] )
{
int sum;
//創建一個指向lua解釋器的指針
L = luaL_newstate();
//加載lua標準庫
luaL_openlibs(L);
//注冊C++函數
lua_register(L,"clib",clib);
//加載腳本
luaL_dofile(L,"4.lua");
//調用函數
lua_getglobal(L,"run");
//運行函數并把結果壓入棧
lua_pcall(L,0,0,0);
//關閉并釋放資源
lua_close(L);
return 0;
}
#include "windows.h"
extern "C"{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#pragma comment(lib,"lua5.1.lib")
lua_State * L;
static int clib(lua_State *L) //給lua調用的c函數必須定義成static int XXX(lua_State *L)
{
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
lua_pushstring(L,path);
return 1; //為什么要返回1?這是有依據的,該函數把結果壓入了棧,lua調用該函數將從棧中
//取1個結果
}
int main ( int argc, char *argv[] )
{
int sum;
//創建一個指向lua解釋器的指針
L = luaL_newstate();
//加載lua標準庫
luaL_openlibs(L);
//注冊C++函數
lua_register(L,"clib",clib);
//加載腳本
luaL_dofile(L,"4.lua");
//調用函數
lua_getglobal(L,"run");
//運行函數并把結果壓入棧
lua_pcall(L,0,0,0);
//關閉并釋放資源
lua_close(L);
return 0;
}
4.lua文件
view plaincopy to clipboardprint?
function run()
print("call running from c")
print(clib())
end
function run()
print("call running from c")
print(clib())
end
這個例子實現了C與lua的相互調用。。另外,還可以把我前面一篇lua調用C dll的內容整合在一起。。
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/bhwst/archive/2010/07/29/5774746.aspx
posted on 2010-12-27 12:57 肥仔 閱讀(2303) 評論(0) 編輯 收藏 引用 所屬分類: 腳本語言