Lua编译
1、编译Lua为动态库(不用静态库,影响C++编译速度)
2、建立Lua编译器项目
3、编译Lua库为了以后对其扩展(也可以直接下载库)
步骤:
1.建立一个win32的空项目,并且在win32的向导里面点击选定dll,空项目
2.把Lua导进去我们的空项目里面去
3.编译
这里会出两个错误,都是main函数重复引起的
1.在luac.c里面,我们把main函数改成cmain
2.在lua.c里面,我们把main函数改成rmain
4.设置编译输出路径为../../bin
5.设置输出导入库路径为../../lib
6.添加LUA_BUILD_AS_DLL宏
设置编译输出路径:
项目右键找到属性 --> 配置属性 ---> 常规 ---> 输出目录 ---> ..\..\bin 并且在对应的路径手动去创建bin目录
设置输出导入库路径:
项目右键找到属性 --> 链接器 --> 高级 ---> 导入库 ---> 改成..\..\lib\$(TargetName).lib
设置之后编译发现在lib文件夹下并没有关于lib的文件产生,这是由于我们的Lua的预编译宏定义没弄
添加预编译宏:
项目右键找到属性 --> C/C++ --> 预处理器 --> 预处理器定义 --> 在前面添加 LUA_BUILD_AS_DLL; (添加这句但不删除后面的)
编译之后我们就可以得到bin的dll和lib文件
看到bin和lib有这五个文件,编译Lua就大功告成了
测试Lua能否使用
创建一个新的项目
Windows桌面向导 --> 位置选在我们拥有Lua的bin下的dll和lib的src文件下 --> 确定 ---> 选择windows控制台程序.exe、不要预编译、安全开发生命周期
我们得先把lua的.h文件导入到我们的项目里面去
项目右键找到属性 --> C/C++ --> 常规 --> 附加包含目录:..\Luadll(我们之前编译Lua的项目名称就是Luadll,这个项目拥有lua的所有头文件)
把Lua的lib导进去
项目右键找到属性 --> 链接器 --> 常规 --> 附加目录库:..\..\lib
并且在
链接器 --> 输入 --> 附加依赖项添加:Luadll.lib;
把输出目录改成bin
项目右键找到属性 --> 配置属性 --> 常规 --> 输出目录改成..\..\bin
调试 --> 工作目录改成..\..\bin
在bin下创建一个main.lua(程序的输出目录bin)
内容:
print("Hello Lua")
程序:
extern "C" { //指定这些都是用C语言编译的
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
}
int main(void)
{
lua_State* L = lua_open(); //创建lua的状态,堆栈
luaopen_base(L); //打开基本库
if (luaL_loadfile(L, "main.lua")) {
const char *error = lua_tostring(L, -1);
printf("lua load error: %s \n", error);
return -1;
}
if (lua_pcall(L, 0, 0, 0)) {
const char *error = lua_tostring(L, -1);
printf("lua call error: %s \n", error);
return -1;
} //开始调用
return 0;
}
最后输出结果: