当前位置:首页|资讯

Windows下编译Lua源码

作者:划水的松鼠鱼发布时间:2024-09-30

从官网下载Lua5.4.7的源代码,解压后,所有源码在src目录下。按lua文档的描述,这里有3个项目,对应lib,解析器和编译器,使用visual studio编译这3个项目。这里分为三步,先是新建这三个项目,然后添加源码到项目,再设置3个项目属性依赖。


1. 新建3个空项目

1. 创建第一个新的C++空项目,构建解析器,这里命名为lua。设想的是一个解决方案,挂三个项目。因此这里取消勾选解决方案和项目在同一目录中

2. 右键解决方案,添加新建项目到解决方案。把运行库liblua,还有编译器luac也添加到解决方案中去。

2. 添加源码到项目

1. 这里先拷贝了源码src目录到解决方案目录下,也可以不用拷贝

2. 为liblua项目添加src目录下除去lua.c和luac.c的所有文件

3. 同上,为lua项目添加lua.c文件,luac项目添加luac.c文件

3. 设置项目属性和引用

  1. 为lua和luac项目添加liblua引用

2. 右键liblua项目,打开属性页,设置相关参数。这里有两套方案,一个是走静态库lib,另一个是设为动态库dll。

方案1:静态库lib设置,设置类型为dll,以及编译为C代码,然后编译生成就可以看到生成的文件了。

方案2:动态库dll设置

1. 设置类型为dll

2. 添加宏LUA_BUILD_AS_DLL。

3. 设置编译为C代码

4. 这时编译,发现dll和lua解析器都可以正常生成。但编译器出现了两个链接错误,找不到luaG_getfuncline和luaU_dump函数。

以luaG_getfuncline为例,找到函数声明。发现它声明为LUAI_FUNC,这个宏实际定义为extern,并没有导出。简单把它改成LUA_API,LUA_API定义为__declspec(dllexport)。

同样修改luaU_dump的声明,然后可以正常生成了。


Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1