http://blog.csdn.net/bhwst/archive/2010/07/29/5774746.aspx
VC要編譯LUA文件必須先配置VC編程環(huán)境。。我用的是VC6.0,lua 5.1.4版
首先將lua的"lua.h" ,"lualib.h", "lauxlib.h" 這三個(gè)放在vc程序include文件夾下
然后將lua的lua5.1.lib放在lib文件夾下就OK了
下面看看我寫(xiě)的一個(gè)小例子:
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調(diào)用的c函數(shù)必須定義成static int XXX(lua_State *L)
{
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
lua_pushstring(L,path);
return 1; //為什么要返回1?這是有依據(jù)的,該函數(shù)把結(jié)果壓入了棧,lua調(diào)用該函數(shù)將從棧中
//取1個(gè)結(jié)果
}
int main ( int argc, char *argv[] )
{
int sum;
//創(chuàng)建一個(gè)指向lua解釋器的指針
L = luaL_newstate();
//加載lua標(biāo)準(zhǔn)庫(kù)
luaL_openlibs(L);
//注冊(cè)C++函數(shù)
lua_register(L,"clib",clib);
//加載腳本
luaL_dofile(L,"4.lua");
//調(diào)用函數(shù)
lua_getglobal(L,"run");
//運(yùn)行函數(shù)并把結(jié)果壓入棧
lua_pcall(L,0,0,0);
//關(guān)閉并釋放資源
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調(diào)用的c函數(shù)必須定義成static int XXX(lua_State *L)
{
char path[MAX_PATH];
GetCurrentDirectory(MAX_PATH,path);
lua_pushstring(L,path);
return 1; //為什么要返回1?這是有依據(jù)的,該函數(shù)把結(jié)果壓入了棧,lua調(diào)用該函數(shù)將從棧中
//取1個(gè)結(jié)果
}
int main ( int argc, char *argv[] )
{
int sum;
//創(chuàng)建一個(gè)指向lua解釋器的指針
L = luaL_newstate();
//加載lua標(biāo)準(zhǔn)庫(kù)
luaL_openlibs(L);
//注冊(cè)C++函數(shù)
lua_register(L,"clib",clib);
//加載腳本
luaL_dofile(L,"4.lua");
//調(diào)用函數(shù)
lua_getglobal(L,"run");
//運(yùn)行函數(shù)并把結(jié)果壓入棧
lua_pcall(L,0,0,0);
//關(guān)閉并釋放資源
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
這個(gè)例子實(shí)現(xiàn)了C與lua的相互調(diào)用。。另外,還可以把我前面一篇lua調(diào)用C dll的內(nèi)容整合在一起。。
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/bhwst/archive/2010/07/29/5774746.aspx