您的位置:首页 > 编程语言 > Lua

VC6.0配置LUA编译环境及LUA调用C++函数的简单示例

2013-04-04 20:56 826 查看
VC6.0配置LUA编译环境及LUA调用C++函数的简单示例

|

http://www.lua.org,下载了lua 5.13源代码下来,一共有四个目录:doc | src | test | etc ;然后按网上的教程用VC6来编译出LUA的编译器和解释器(已经成功编译出两个lib,core.lib、standard.lib):

第一步:编译出两个lib core.lib:新建静态连接库,把src中的lapi.c、lcode.c、ldebug.c、 ldo.c、 ldump.c 、lfunc.c 、lgc.c、 llex.c 、lmem.c 、lobject.c 、lopcodes.c、 lparser.c、 lstate.c 、lstring.c、ltable.c、ltests.c 、ltm.c、 lundump.c、 lvm.c、 lzio.c添加到静态连接库后编译出core.lib standrad.lib:新建静态连接库,把src中的lauxlib.c、
lbaselib.c 、ldblib.c 、liolib.c 、lmathlib.c、 ltablib.c、lstrlib.c、 loadlib.c、linit.c和loslib.c添加到静态连接库后编译出standrad.lib

第二步: 编译解释器为了编译解释器,我们需要建立一个win32控制台程序,然后加入文件lua.c, 并且链接到上面我们建立的lib文件,将include 路径设置到../include/下,输出路径设置到../bin/下

第三步: 编译编译器编译器与解释器的步骤基本相同,只不过我们需要加入其luac.c print.c lopcodes.c ,并且定义LUA_OPNAMES 简单示例:

#include "windows.h"

extern "C"{

#include "lua.h"

#include "lualib.h"

#include "lauxlib.h"

}

/* 下面包含的是自己编译出来的LIB文件 */

#pragma comment(lib,"core.lib")

#pragma comment(lib,"standard.lib")

/* 全局变量 */

lua_State *L;

/* LUA调用的函数必须是全局函数,

返回值一定要int,另外参数一

定要带有lua_State * */

static int test(lua_State *L)

{

/* 判断是否数字 */

if (!lua_isnumber(L,1))

{ lua_pushstring(L,"warning first isn't number");

lua_error(L);

return 0;

}

/* 判断是否数字 */

if (!lua_isnumber(L,2))

{

lua_pushstring(L,"warning second isn't number");

lua_error(L);

return 0;

}

/* 读取第一个参数 */

int x=lua_tonumber(L,1);

/* 读取第二个参数 */

int y=lua_tonumber(L,2);

cout<<"x+y="<<x+y<<endl;

return 2;

}

int main(int argc, char* argv[])

{

/* 初始化LUA */

L=lua_open();

/* 打开LUA库文件*/

luaL_openlibs(L);

/* 注册LUA函数 */

lua_register(L,"test",test);

/* 执行LUA文件 */

luaL_dofile(L,"debug\\test.lua");

/* 关闭LUA */

lua_close(L);

printf( "Press enter to exit!" );

getchar();

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: