转自baidu空间。 1,去lua.org上下载lua5.1.4的压缩包吧。然后解压到本地。 2,你会发现中间有若干make文件还有一个批处理文件还有若干readme文件。你甭理他。忽略。 3,打开vc创建一个空的静态库工程,定义工程名为lua5.1.4,然后把src目录下的所有.c和.h文件一股脑全部导入到工程中 4,直接开始编译。我竟然编译过了。nnd奇迹啊奇迹。啥都不用改。然后就在debug目录下就有lua5.1.4.lib静态库文件了。 5,开始在lua5.1.4的根目录下创建一个sample测试工程代码,记得是console命令行的代码。 首先在sample目录下创建add.lua文件。文件内容就三行 function add ( x, y ) --sample lua fun1(); print("print from lua!"); return x + y; end 下面是cpp文件的内容:记得如果是vc.net下的main主函数跟vc6的不一样不要全copy过去,要改下。 //简单的a+b的计算,计算的主函数在add.lua脚本中,脚本又调用cpp文件中的fun1函数 #include "stdafx.h" extern "C"{ #include "..\\..\\lua-5.1.4\\src\\lauxlib.h" #include "..\\..\\lua-5.1.4\\src\\lualib.h" } #pragma comment(lib,"..\\..\\debug\\lua5.1.4.lib") lua_State * L; int fun1(lua_State *L) { printf("function from cpp!\n"); return 0; } int luaadd ( int x, int y ) { int sum; //函数名 lua_getglobal(L, "add"); //第一个参数压栈 lua_pushnumber(L, x); //第二个参数压栈 lua_pushnumber(L, y); //调用函数 lua_call(L, 2, 1); //得到返回值 sum = (int)lua_tonumber(L, -1); lua_pop(L, 1); return sum; } int main ( int argc, char *argv[] ) { int sum; //创建一个指向Lua解释器的指针。 L = lua_open(); lua_pushcfunction(L, fun1); lua_setglobal(L, "fun1"); //添加注册c的fun1函数 //函数加载Lua库 luaL_openlibs(L); //加载脚本 luaL_dofile(L,"add.lua"); //调用函数 sum = luaadd( 10, 11); // print the result printf( "The sum is %d\n", sum ); //关闭 释放资源 lua_close(L); printf( "Press enter to exit!" ); getchar(); //printf("Hello World!\n"); return 0; } 好了自此可以运行了。 |
评论