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;
}
|
在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;
}
相关文章推荐
- VC6.0配置LUA编译环境及LUA调用C++函数的简单示例
- VC++6.0配置LUA环境和C++调用LUA的简单示例
- lua环境的配置以及c++调用lua的简单例子
- C++程序调用Python的函数(简单应用)及Ubuntu16.04下codeblocks的环境配置
- 最简单的C++中调用LUA函数源代码
- 在Lua中调用c++函数示例
- sublime text3 C/C++编译环境简单配置
- Lua中调用C++函数示例
- Linux环境下proc的配置c/c++操作数据库简单示例
- 简单C++调用lua函数及C++和lua相互函数调用小例子
- lua学习系列:c++调用lua脚本的简单示例
- 简单将sublime text 配置为lua或c#一键编译运行环境
- C++调用Lua编程环境搭建及测试代码示例
- C++调用Lua编程环境搭建及测试代码示例
- 最简单的C++中调用LUA函数源代码
- [C/C++]Windows中配置g++编译环境最简单方法
- 简单C++调用lua函数的小例子
- C++调用Lua编程环境搭建及测试代码示例
- Lua在vs2013的配置环境以及C++如何调用lua
- 简单C++调用lua函数及C++和lua相互函数调用小例子