1.首先下載基於VS的LUA源碼,地址為http://luabinaries.luaforge.net/download.html
2.在LIB工程中添加mylib.c檔案
3.在檔案當中添加如下的代碼
#include "lua.h"<br />#include "lauxlib.h"<br />#include "lualib.h"<br />static int myfun(lua_State* L)<br />{<br />printf("myfun is succeed!");<br />return 0;<br />}<br />static const struct luaL_Reg mylib[] =<br />{<br />{"myfun",myfun},<br />{NULL,NULL}<br />};<br />LUALIB_API int luaopen_mylib(lua_State* L)<br />{<br />luaL_register(L,"mylib",mylib);<br />}
4。在lualib.h中增加如下定義
#define LUA_MYLIBNAME"mylib"<br />LUALIB_API int (luaopen_mylib) (lua_State *L);
5.在linit.c,中將
static const luaL_Reg lualibs[] = {<br /> {"", luaopen_base},<br /> {LUA_LOADLIBNAME, luaopen_package},<br /> {LUA_TABLIBNAME, luaopen_table},<br /> {LUA_IOLIBNAME, luaopen_io},<br /> {LUA_OSLIBNAME, luaopen_os},<br /> {LUA_STRLIBNAME, luaopen_string},<br /> {LUA_MATHLIBNAME, luaopen_math},<br /> {LUA_DBLIBNAME, luaopen_debug},<br /> {LUA_MYLIBNAME,luaopen_mylib},<br /> {NULL, NULL}<br />};
最後增加一行,如所示
6.更新include目錄的lualib.h檔案
7.測試如下
#include "stdafx.h"<br />extern "C" {<br />#include "lua.h"<br />#include "lualib.h"<br />#include "lauxlib.h"<br />}<br />int main()<br />{<br />lua_State *L = luaL_newstate();<br />lua_cpcall(L, luaopen_base, 0);<br />lua_cpcall(L, luaopen_io, 0);<br />lua_cpcall(L, luaopen_string, 0);<br />lua_cpcall(L,luaopen_mylib,0);<br />const char *buf = "mylib.myfun()";//注意調用規則<br />//luaL_loadstring(L, buf);<br />int s = luaL_loadstring(L, buf);<br />if ( s==0 )<br />{<br />s = lua_pcall(L, 0, LUA_MULTRET, 0);<br />}<br />lua_close(L);<br />getchar();<br />return 0;<br />}<br />
ok