Lua编译器及Lua与C相互调用
2015-03-17何鹏
Lua是一门小巧强大的编程语言,很多开发工具都对Lua源码进行了封装,本文用VS2012编译了Lua源码,并详细讲述了Lua和C的互相调用。本文使用的是Lua5.1
一、Lua编译成解释器
1.官网上下载源码:http://www.lua.org/
2.用VS2012新建一个解决方案,在解决方案里新建一个项目LuaTest
3.在项目目录LuaTest文件夹下新建一个目录Lua,将Lua源码src文件夹下的文件都复制到LuaTest/Lua目录
4.右键点击vs2012中的LuaTest项目,--添加--新建筛选器--命名为Lua,右击该筛选器,添加--现有项--将LuaTest/Lua文件夹全选导入
5.右击LuaTest项目,点击生成,即在Debug目录下生成了Lua编译器LuaTest.exe
运行该编译器,在窗口输入print(loadlib()):
该编译器不支持动态连接库,将项目中的luaconf.h中的
#undef LUA_COMPAT_LOADLIB
改为
#define LUA_COMPAT_LOADLIB
重新生成,即可支持动态链接库
二,将Lua编译成静态库使用
将上面项目第四步完成后:
将源码中lua.c文件中main()函数改名(Lua5.3中还需将luac.c中的main()函数改名),这两个文件的main函数主要是生成解释器程序
右击项目--属性--配置属性--常规下的配置类型设为.lib
完成后右击项目--重新生成则生成了LuaTest.lib静态库
三、将Lua编译成动态库使用
四、C中调用Lua(可以使用Lua静态库,也可以使用Lua源码一同编译)
1.新建一个项目LuaLua,同上,在第四步时只导入头文件,不导入.c文件
2.在项目中新建一个文件,LuaLua.cpp输入:
/
extern"C"
{
#include"Lua/lua.h"
#include"Lua/lauxlib.h"
#include"Lua/lualib.h"
#include<stdio.h>
}
#pragma comment(lib,"LuaTest.lib")
void load (